find_package用于查找包(通常是使用三方库),并返回关于包的细节(使用包所依赖的头文件、库文件、编译选项、链接选项等) .cmake文件作用都是为了给find_package命令的调用方返回有关包的信息(头文件路径、库文件路径、编译连接选项、版本信息等等) <PackageName>_FOUND变量用来表示包是否找到,True表示包找到了,False表...
在这种模式下,当调用find_package命令查找<PackageName>包的时候,实际上会去查找一个名为Find<PackageName>.cmake的文件,这个文件的主要任务就是确定一个包是否可用,查找的结果会反映在变量<PackageName>_FOUND上供find_package的调用者使用。当找到可用的包,同时也会提供使用这个包所需要的变量、宏和导入目标(例如...
cpp_redis是个C++11的开源的redis client库,支持cmake构建,但并没有提供CONFIG模式的import target导入...
这里介绍一下与基本命令有差异的地方: <PackageName>_FOUND 变量用来表示包是否找到, True 表示包找到了, False 表示未找到满足条件的包。如果包被找到,那么还会提供其他与这个包相关的变量供调用者使用,例如包的头文件、库文件等。这些变量都是以 <PackageName>_...
if(mymath_FOUND) message("Find mymath:${mymath_INCLUDE_DIR};${mymath_LIBRARY};") endif() # 执行cmake . cmake . # 输出为 test Find comptest Find mymath: /XXX/mymath; /XXX/mymath/libmymath.a; OPTIONAL_COMPONENTS:与COMPONENTS的区别是,不强制要求这些组件必须存在。不影响CMake的执行。
我们可以这样写: find_package(Qt5 QUIET COMPONENTS Core Widgets) if(Qt5_FOUND) add_subdirectory(gui) endif() 上述代码首先尝试查找并加载Qt5库及其Core和Widgets组件,如果找到了Qt5库,则添加GUI子目录进行构建。如果找不到Qt5库,则CMake将不会输出错误信息,而是继续执行后续的配置和构建步骤。
if(mymath_FOUND) message("Find mymath: ${mymath_INCLUDE_DIR}; ${mymath_LIBRARY};") endif() # 执行cmake . cmake . # 输出为 test Find comp test Find mymath: /XXX/mymath; /XXX/mymath/libmymath.a; OPTIONAL_COMPONENTS:与COMPONENTS的区别是,不强制要求这些组件必须存在。不影响CMake的执...
可以有多个 //PATHS:查找的路径,可以有多个 find_library(ADD_LIBRARY NAMES add PATHS ${CMAKE_SOURCE_DIR}/lib) //如果ADD_INCLUDE_DIR ADD_LIBRARY都有结果,设置ADD_FOUND为真,作为find_package的返回结果 if (ADD_INCLUDE_DIR AND ADD_LIBRARY) set(ADD_FOUND TRUE) endif (ADD_INCLUDE_DIR AND ADD_...
且必须具有 OpenCV::core 和 OpenCV::videoio 这两个组件,如果没有这两个组件也会报错find_package(OpenCV REQUIRED COMPONENTS core videoio)//查找名为 OpenCV 的包,找不到就报错,可具有 OpenCV::core 和 OpenCV::videoio 这两个组件,没有这两组件不会报错,通过 ${OpenCV_core_FOUND} 查询是否找到 core ...
你可以通过<LibaryName>_FOUND来判断模块是否被找到,如果没有找到,按照工程的需要关闭 某些特性、给出提醒或者中止编译,上面的例子就是报出致命错误并终止构建。 如果<LibaryName>_FOUND为真,则将<LibaryName>_INCLUDE_DIR加入 INCLUDE_DIRECTORIES, 通过find_package引入非官方的库(该方式只对支持cmake编译安装的库有...