在cmake某个程序的时候,经常会提示找不到某个所依赖的库,那么这是时候我们就需要检查我们引入依赖库的路径对不对了, Cmake中一个自动寻找函数find_package()可以帮我们实现这个功能。 实践 例子:Boost 实例 cmake_minimum_required(VERSION 3.5) # Set the project name project (third_party_include) # find ...
boostc++cmake Cmake cannot find Boost libraries 我是Cmake的新手,并增强了C ++中的库。 我...
find_package将先到module路径下查找Find<name>.cmake。首先它搜索${CMAKE_MODULE_PATH}中的所有路径,然后搜索/usr/share/cmake-3.5/Modules。比如find_package(Boost)搜索的文件是/usr/share/cmake-3.5/Modules/FindBoost.cmake。 采用list APPEND 不会改变原来的变量,只是在list中新增。 # set(CMAKE_MODULE_...
find_package(OpenCV) 实际上是在找一个名为 OpenCVConfig.cmake 的文件。 注:出于历史兼容性考虑,除了 OpenCVConfig.cmake 以外OpenCV-config.cmake 这个文件名也会被 CMake 识别到。 同理,find_package(Qt5) 则是会去找名为 Qt5Config.cmake 的文件。 这些形如 包名+ Config.cmake 的文件,我称之为包...
让find_package在指定路径找依赖包,有三种方式 # 1. 设置DIRset(Torch_DIR /home/libtorch) find_package(Torch REQUIRED)# 2. 设置PATHSfind_package(Protobuf REQUIRED PATHS /home/libtorch NO_DEFAULT_PATH)# 3. 指定set(CMAKE_PREFIX_PATH /home/libtorch)...
使用上,MODULE模式比CONFIG模式要简单地多,通常情况下使用这一类命令就足够完成我们的要求,只有在MODULE模式找不到相应包的情况下,我们才可能会需要在CONFIG模式下使用。 用法 find_package(<PackageName> [version] [EXACT] [QUIET] [MODULE] [REQUIRED] [[COMPONENTS] [components...]] ...
find_package(Boost 1.71 REQUIRED) 在这个例子中,我们指定了要查找的Boost库的版本号1.71。CMake将仅仅查找与这个版本完全匹配的Boost库。 示例3:查找带有选项组件的PCL库 find_package(PCL REQUIRED COMPONENTS common io) 在这个例子中,我们使用“find_package”指令来查找PCL库,并指定了我们需要的两个组件:"common...
上面列出的opencv和protobuf是重灾区,还有没有列出来的比如boost版本问题等。解决起来也不难: 明确find_package()的N大查找顺序 知道如何让find_package()找到非CMake构建安装的依赖包 find_package()原理解读 根据cmake官方文档可以知道,find_package()有Module模式(基本用法,basic signature)和Config模式(full signat...
- package_name:要查找的包的名称,例如Boost、OpenCV等。 - version:可选参数,用于指定所需包的最低版本。 - MODULE:可选参数,指示CMake在cmake_modules目录中查找模块文件。这些文件通常包含与特定包相关的特殊配置信息。 - REQUIRED:可选参数,表示所查找的包是必需的。如果未找到指定的包,并且REQUIRED参数被设置...