可惜要使用find_package,要有对应的FindXXX.cmake存在才可以,对于比较小众的库就不太好找。 还可以使用find_library。 对于只需要头文件的库,最简单的,可以使用find_path。就是在CMakeLists.txt指定一个文件名,CMake会自动搜索,并且最后获取这个文件所在的文件夹,可以直接作为include dir。 例如stb库,https://git...
如果我们引用的第三方库没有提供Find<LibaryName>.cmake,我们可以自己写,只需要填充上面上面变量,就可以使用find_package,实际一般用如下几个函数确定这三个变量,而这几个函数默认都会去CMAKE_PREFIX_PATH查找: FIND_PACKAGE_HANDLE_STANDARD_ARGS:<LibaryName>_FOUND find_path:获得<LibaryName>_INCLUDE_DIR目录。
在前面FindProtobuf.cmake中看到,提供google/protobuf/service.h文件,找到了包含它的目录是/usr/include,作为find_path()的输出变量的Protobuf_INCLUDE_DIR,被设定为/usr/include。 如果在/usr/include不存在google/protobuf/service.h呢?find_path()有一堆查找规则,每个规则会查找一个或一些目录,只要查找到就不...
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...
接下来我们回到我们的Cmake项目中来,在cmake文件夹下新建一个FindAdd.cmake的文件。我们的目标是找到库的头文件所在目录和共享库文件的所在位置。 # 在指定目录下寻找头文件和动态库文件的位置,可以指定多个目标路径find_path(ADD_INCLUDE_DIR libadd.h /usr/include/ /usr/local/include${CMAKE_SOURCE_DIR}/...
find_package在一些目录中查找OpenCV的配置文件。 找到后,find_package会将头文件目录设置到${OpenCV_INCLUDE_DIRS}中,将链接库设置到${OpenCV_LIBS}中。 设置可执行文件的链接库和头文件目录,编译文件。 到现在为止出现了第一个问题。那就是: find_package会在哪些目录下面寻找OpenCV的配置文件?
macro(FIND_INCLUDE_DIR result curdir) #定义函数,2个参数:存放结果result;指定路径curdir; file(GLOB_RECURSE children "${curdir}/*.hpp" "${curdir}/*.h" ) #遍历获取{curdir}中*.hpp和*.h文件列表 message(STATUS "children= ${children}") #打印*.hpp和*.h的文件列表 ...
include_directories(${OpenCV_INCLUDE_DIRS}) target_link_libraries(my_bin, ${OpenCV_LIBS}) 工作流程如下: find_package在一些目录中查找OpenCV的配置文件。 找到后,find_package会将头文件目录设置到${OpenCV_INCLUDE_DIRS}中,将链接库设置到${OpenCV_LIBS}中。
# 设置属性PROPERTIES# 导入路径IMPORTED_LOCATION# ${CMAKE_SOURCE_DIR}是本 CMakeList.txt 构建脚本的路径,是 CMake 工具内置的变量 # Android CMake 也内置了一些变量,如ANDROID_ABI${CMAKE_SOURCE_DIR}/../jniLibs/armeabi-v7a/libadd.a)# 打印日志信息 ...
CMAKE_INCLUDE_DIRECTORIES_BEFORE这个变量可以将添加的头文件搜索路径放在已有路径的前面。 SET(CMAKE_INCLUDE_DIRECTORIES_BEFORE ON) # SET(CERES_DIR /home/wenhaolun/ubuntu18.04_libs/ceres) INCLUDE_DIRECTORIES([BEFORE] ${CERES_DIR}/include) 三.find_library ...