find_package在一些目录中查找OpenCV的配置文件。 找到后,find_package会将头文件目录设置到${OpenCV_INCLUDE_DIRS}中,将链接库设置到${OpenCV_LIBS}中。 设置可执行文件的链接库和头文件目录,编译文件。 到现在为止出现了第一个问题。那就是: find_package会在哪些目录下面寻找OpenCV的配置文件? find_package目录 ...
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_LIBRARIES},然后在工程中包含...
(1). _ROOT环境变量中指定的搜索路径,其中是要查找的包(find_package的第一个参数保留大小写)。如果传递了NO_PACKAGE_ROOT_PATH,或者将CMAKE_FIND_USE_PACKAGE_ROOT_PATH设置为FALSE,则可以跳过此操作。 (2). 搜索cmake特定缓存变量中指定的路径。通过命令行-DVAR=value传递进来的路径,多个路径需要以分号隔开。
因此find_package 并不是直接去找具体的动态库文件和头文件(例如 libQt5Core.so)。而是去找包配置文件(例如Qt5Config.cmake),这个配置文件里包含了包的具体信息,包括动态库文件的位置,头文件的目录,链接时需要开启的编译选项等等。 而且某些库都具有多个子动态库,例如 Qt 就有libQt5Core.so、libQt5Widgets.so...
find_package(MyLibrary REQUIRED) ``` 在这个例子中,`MyLibrary_DIR` 是一个指向库安装路径的变量,而 `find_package` 命令会使用这个路径进行搜索。 总体而言,具体的搜索路径会依赖于库的安装方式以及 CMake 模块文件的设置。如果库有官方的 CMake 模块文件,`find_package` 通常会使用这些文件来定位库的位置。
在使用CMake构建项目时,有时需要告诉find_package命令寻找32位库而不是64位库。为了实现这一目的,可以通过设置CMAKE_LIBRARY_ARCHITECTURE变量来指定寻找的库的架构。 具体步骤如下: 在CMakeLists.txt文件中添加以下代码: 代码语言:cmake 复制 set(CMAKE_LIBRARY_ARCHITECTURE "i386-linux-gnu") 代码语...
find_package(<PackageName> [version] [EXACT] [QUIET] [MODULE] [REQUIRED] [[COMPONENTS] [components...]] [OPTIONAL_COMPONENTS components...] [NO_POLICY_SCOPE]) Module模式下,相比于Config模式,可选配置参数少一些,并且如果按用户指定的配置却找不到包,就会自动进入Config模式(如上图所示)。
1 FIND_PACKAGE FIND_PACKAGE([version] [EXACT] [QUIET] [NO_MODULE] [ [ REQUIRED | COMPONENTS ] [ componets... ] ] ) 用来调用预定义在 CMAKE_MODULE_PATH 下的 Find.cmake 模块。 也可以自己定义 Find模块,将其放入工程的某个目录中,通过 SET(CMAKE_MODULE_PATH dir)设置查找路径,供工程FIND_PA...
1. find_package在MODULE模式下找到Protobuf find_package(Protobuf REQUIRED) # 能找到 find_package(Protobuf REQUIRED CONFIG) # 找不到 也即是:MODULE模式下找到了protobuf。而MODULE模式下无非是先后从CMAKE_MODULE_PATH所指示的路径、cmake安装的Modules目录(如~/soft/cmake/share/cmake-3.17/Modules),根据...