add_executable(my_bin src/my_bin.cpp)find_package(OpenCV REQUIRED)include_directories(${OpenCV_INCLUDE_DIRS})target_link_libraries(my_bin, ${OpenCV_LIBS}) 工作流程如下: find_package在一些目录中查找OpenCV的配置文件。 找到后,find_package会将头文件目录设置到${OpenCV_INCLUDE_DIRS}中,将链接库设置...
${JSONCPP_ROOT}/include ) set(openssl_root /workspace/xxx/openssl-1.1.1v/out) file(GLOB openssl_libs ${openssl_root}/lib*/*.so) include_directories( ${openssl_root}/include ) 当然,为了避免多个库文件,链接出错的问题,最好单独自己编译Find_xxxx.cmake文件,然后在主CmakeLists.txt中include。 c...
CMakeLists.txt实例 find_package(Protobuf REQUIRED)include_directories(${PROTOBUF_INCLUDE_DIR})add_executable(main src/main.cpp)target_link_libraries(main ${PROTOBUF_LIBRARIES}) find_package从默认目录中寻找Protobuf,找到后将头文件目录设置为${PROTOBUF_INCLUDE_DIR},库文件位置设置为${PROTOBUF_LIBRARIE...
可以看到在执行find_package(OpenCV 3 REQUIRED)命令后,CMake找到了我们安装的位于/usr/local下的OpenCV库,并设置了CMake变量OpenCV_DIR为OpenCV库的配置文件所在路径,正是通过载入这个路径下的OpenCVConfig.cmake配置文件才能配置好OpenCV库,然后在OpenCVConfig.cmake配置文件中定义了变量OpenCV_INCLUDE_DIRS为OpenCV库头...
#include <opencv2/opencv.hpp> 1. 而不会出现编译错误,同时定义了变量 OpenCV_LIBS 为 OpenCV 链接库路径,这样我们才能正确链接到 OpenCV 中的库文件,而不会出现类似未定义的引用这样的链接错误。 通过这个例子就可以看出 find_package 本质上就是一个搜包的命令,通过一些特定的规则找到<package_name>Config.cma...
CMAKE_MODULE_PATH是一个逗号分割的列表,用来指定CMake 模块搜索路径,有两个命令可能会使用到它,分别是include()和find_package。默认情况,这个列表为空,通常是在项目中设置的。 1.2 配置模式(Config mode) 在这个模式下,CMake尝试寻找名为带有config的后缀为cmake文件(<lowercasePackageName>-config.cmake<Package...
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的执行。
include_directories(${OpenCV_INCLUDE_DIRS}) target_link_libraries(my_bin, ${OpenCV_LIBS}) 工作流程如下: find_package在一些目录中查找OpenCV的配置文件。 找到后,find_package会将头文件目录设置到${OpenCV_INCLUDE_DIRS}中,将链接库设置到${OpenCV_LIBS}中。
这个文件的内容是能够被find_package()直接调用的脚本,通常包含了定义目标的代码,而这些代码我们已经通过install(EXPORT)命令生成在my_library.cmake文件中了,因此我们只需要在my_library-config.cmake文件中include()这个文件。包含的时候也要匹配相应的版本号和编译类型 ...
OpenCV_INCLUDE_DIRS 是头文件路径 OpenCV_LIBS 是库文件地址 有了头文件和库文件,自然而然可以正常引用 OpenCV 了。 package 的通用套路 实际上,通过 find_package() 可以顺利查找任何符合 cmake package 标准的外部工程。 find_pacage()方法签名如下: ...