首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何为cmake的find_path添加CMAKE_SYSROOT之外的搜索路径?

在使用CMake构建项目时,find_path函数用于搜索指定文件或目录的路径。默认情况下,find_path会在系统的默认搜索路径中查找文件或目录。但是,有时我们需要在CMAKE_SYSROOT之外的其他路径中搜索文件或目录。要实现这一点,可以通过以下步骤来为find_path添加额外的搜索路径:

  1. 使用CMake的list(APPEND ...)命令将额外的搜索路径添加到CMAKE_FIND_ROOT_PATH变量中。例如,如果要添加路径"/path/to/search",可以在CMakeLists.txt中添加以下代码:
代码语言:txt
复制
list(APPEND CMAKE_FIND_ROOT_PATH "/path/to/search")
  1. 在调用find_path函数之前,设置CMAKE_FIND_ROOT_PATH_MODE_INCLUDE变量为"BOTH"。这将使find_path在CMAKE_SYSROOT和额外的搜索路径中同时进行查找。在CMakeLists.txt中添加以下代码:
代码语言:txt
复制
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE BOTH)

通过以上步骤,你可以为cmake的find_path添加CMAKE_SYSROOT之外的搜索路径。请注意,这种方法适用于CMake 3.0及以上版本。

对于cmake的find_path函数的更详细说明和使用示例,你可以参考腾讯云的CMake文档:

腾讯云还提供了一系列与云计算相关的产品,你可以访问腾讯云官网了解更多详情。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

cmake交叉编译到iOS和Android

最近看了下最新版本cmake文档,很惊喜地发现他已经支持直接设置Android和OSX一些变量了,然后有瞄了一眼NDK,发现里面现在也停工官方cmake支持。...编译iOS工程 iOS 只要设置CMAKE_OSX_SYSROOT,CMAKE_SYSROOTCMAKE_OSX_ARCHITECTURES就可以了,其他都是自动。...只要cmake时候把cmake工具链检测文件改成这个就行了。...不过使用Android这个文件指定工具链时候有一个问题,android.toolchain.cmake指定了只从sysroot来获取include目录和库目录,也就是说很多module里可以指定库搜索目录在...具体来说就是*find_library*和*find_path*之类函数。所以有一些依赖库检测脚本需要在这种情况下跳过检查,直接用。

3.7K10

CentOS7.8下编译muduo库找不到Boost库报错解决方法

从错误信息可以看出找不到Boost库头文件所在路径,于是我查看了一下muduo源代码根目录下CMakeLists.txt文件: cmake_minimum_required(VERSION 2.6)...- 首选Boost安装路径 BOOST_INCLUDEDIR - 首选头文件搜索路径 e.g..../include BOOST_LIBRARYDIR - 首选库文件搜索路径 e.g....如果开启了,则不会搜索用户指定路径之外路径 所以可以首先设置BOOST_ROOT、BOOST_INCLUDEDIR、BOOST_LIBRARYDIR这几个变量值,改成自己Boost库目录,比如我..../ 上面4种方法中,我所熟悉是第三种和第四种,这里我以cmake第三种为例: 注意:不论使用make还是cmake也好,注意:muduo库路径需要根据自己编译后路径为准。

1.9K20
  • caffe:cmake编译指定glog,gflag路径

    寻找glog,gflag代码有bug(目前还没修改),导致即使如上一步通过GLOG_ROOT_DIR,GFLAGS_ROOT_DIR指定了glog,gflag路径cmake也不会找到该路径glog...,gflag,如果你/usr下安装了glog,gflag,它依然会找到系统路径版本。...cmakefind_library查找机制没有全搞明白 简单说就是调用find_library时,会以从一组路径中顺序查找指定库,这有一个优先序问题,如果没有指定了NO_DEFAULT_PATH...,则会先查找默认系统库路径 如果指定了NO_DEFAULT_PATH,则只查找PATHS提供路径,不会查找系统库路径。...因为所以原始代码中没有加NO_DEFAULT_PATH导致每次只能找到系统路径库。 如何保证PATHS指定路径优先被搜索呢?

    2.9K50

    CC++生态工具链——编译构建工具CMakeCMakeList初探

    System") elseif(UNIX) message(STATUS "in Unix System") endif() ---- (7) include_directories 含义:将指定目录添加到编译器头文件搜索范围.../src/com/include) ---- (8) link_directories 含义:添加需要链接共享库(动态链接库)文件路径,相当于g++命令-L参数,也相当于Linux环境变量设置LD_LIBRARY_PATH...使用样例: find_library(LOG_LIB log) ---- (19) find_path 含义:搜索包含指定文件名路径 语法: find_path ( name1 [path1...cmake 当前正在处理源目录完整路径 ---- --EXECUTABLE_OUTPUT_PATH 生成可执行文件路径 ---- --LIBRARY_OUTPUT_PATH 生成路径 ---...---- --CMAKE_CURRENT_LIST_LINE 当前正在处理文件行号 ---- --CMAKE_MODULE_PATH 提供find_package搜索第三方库时使用路径 ----

    2.5K20

    CMake搭建编译环境总结

    获取环境变量 设置编译器 设置依赖库路径 包含头文件路径 添加编译器编译选项 添加打印 CMakeLists路径嵌套 控制编译流程 Shell脚本传递宏至CMakeList CMakeLists传递变量至代码工程...编译警告 CMake编译警告和报错设置 常用警告 配置交叉编译环境常需要修改 设置默认库和头文件搜索路径 设置交叉编译工具链 设置浮点运算处理方式 常见场景 编译动态库 编译静态库 编译可执行文件...当存在被设置但是未被使用参数发出警告,需配合-Wall -Wsign-compare 当比较有符号和无符号值时发出警告 配置交叉编译环境常需要修改 设置默认库和头文件搜索路径 编译默认会从/usr...当设置了CMAKE_SYSROOT后,则会从xxx/usr/include搜索头文件、从xxx/usr/lib中搜索依赖库。...## 系统库路径:${SDKTARGETSYSROOT}/usr/lib ## 系统头文件:${SDKTARGETSYSROOT}/usr/include set(CMAKE_SYSROOT "${SDKTARGETSYSROOT

    2.4K20

    cmake快速入门「建议收藏」

    任何一个软件项目,除了写代码之外,还有一个更为重要任务,就是如何组织和管理这些代码,使项目代码层次结构清晰易读,这对以后维护工作大有裨益。...5.可扩展,可以为 cmake 编写特定功能模块,扩充 cmake 功能。 三、安装cmake 几乎所有主流Linux发行版源中都包含有cmake安装包,直接从源中添加即可。...命令 MESSAGE 会将参数内容输出到终端。 命令 FIND_PATH 指明头文件查找路径,原型如下: find_path( name1 [path1 path2 ...])...该命令在参数 path* 指示目录中查找文件 name1 并将查找到路径保存在变量 VAR中。...这些特性在 gcc/g++ 中是通过编译时参数来决定,如果将优化程度调到最高需要设置参数-O3,最低是 -O0 即不做优化;添加调试信息参数是 -g -ggdb ,如果不添加这个参数,调试信息就不会被包含在生成二进制文件中

    1.2K60

    CMake简介及使用实例

    CMake并不直接建构出最终软件,而是产生标准建构档( Unix Makefile或 Windows Visual C++ projects/workspaces),然后再依一般构建方式使用...使用一对双引号包裹被认为是一个参数。我们命令可以是一个内置命令(project),也可以是一个用户定义宏(macro)或者函数(function)。...include 文件 使用范例:include_directories(${PROJECT_SOURCE_DIR}/lib) find_path命令 命令语法:find_path(name1...(目录)路径列表并保存在 variable中 #文件路径列表中每个文件文件名都能匹配 globbing expressions(非正则表达式,但是类似) #如果指定了 RELATIVE路径,那么返回文件路径列表中路径为相对于...(语法为 CMake ,这里使用 CMake .. 表明了 CMakeLists.txt在 Build目录父目录中)。

    2.5K21

    cmake:cpp_redisfind_package脚本 FindCppRedis.cmake

    cpp_redis是个C++11开源redis client库,支持cmake构建,但并没有提供CONFIG模式import target导入脚本,如果希望在cmake下以find_package...方式导入cpp_redis库,就需要自己写一个MODULE模式脚本,以下为FindCppRedis.cmake脚本实现 FindCppRedis.cmake # FindCppRedis # ----...执行时可接收以下输入变量 CPPREDIS_MT_DIR, [可选],指定MSVC以/MT选项编译安装位置 CPPREDIS_MD_DIR, [可选],指定MSVC以/M选项编译安装位置...defined, 则忽略此参数 FindCppRedis.cmake 执行后输出变量 CPPREDIS_FOUND, 找到 cpp_redis 库为true,否则为false CPPREDIS_INCLUDE_DIR...所在文件夹添加CMAKE_MODULE_PATH # 否则find_package(CppRedis)时找不到FindCppRedis.cmake list (APPEND CMAKE_MODULE_PATH

    65120
    领券