find_package
跳转到“find_package”
先后顺序
# 1. 设置 CMake 最低版本和项目名称cmake_minimum_required(VERSION 3.10)# 补充,包含其他CMake模块文件,这些文件可能提供了额外的函数或宏,用于设置变量或查找库文件并创建目标。include(cmake/modules/set_ifndef.cmake)
project(MyProject)
# 2. 设置变量set(CMAKE_CXX_STANDARD 14)set(SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/src)
# [可选] 3. 设置全局包含目录(推荐使用目标特定的替代方法)# include_directories(${PROJECT_SOURCE_DIR}/include)
# [可选] 4. 设置全局库目录(推荐使用目标特定的替代方法)# link_directories(${PROJECT_SOURCE_DIR}/lib)
# [可选] 找包
# 5. 定义目标add_executable(my_executable main.cpp)
# 6. 为目标指定包含目录target_include_directories(my_executable PRIVATE ${PROJECT_SOURCE_DIR}/include)
# 7. 为目标链接库target_link_libraries(my_executable PRIVATE some_library)
# 8. 为目标添加源文件target_sources(my_executable PRIVATE source.cpp)
# 9. 添加编译选项target_compile_options(my_executable PRIVATE -Wall)
# 10. 定义安装规则install(TARGETS my_executable RUNTIME DESTINATION bin)find_library
跳转到“find_library”find_library(<VAR> NAMES name1 [name2 ...] [PATHS path1 [path2 ...]] [NO_DEFAULT_PATH] [NO_CMAKE_ENVIRONMENT_PATH] [NO_CMAKE_PATH] [NO_SYSTEM_ENVIRONMENT_PATH] [NO_CMAKE_SYSTEM_PATH] [CMAKE_FIND_ROOT_PATH_BOTH | ONLY_CMAKE_FIND_ROOT_PATH | NO_CMAKE_FIND_ROOT_PATH])
find_library(MY_LIB NAMES mylib) # 将在默认的搜索路径中查找名为 mylib 的库,并将其路径存储在变量 MY_LIB 中find_library(MY_LIB NAMES mylib PATHS /path/to/custom/lib /another/path) # 将在指定的路径和默认路径中查找 mylibfind_library(MY_LIB NAMES mylib NO_DEFAULT_PATH) # 将只搜索 mylib,但不使用默认路径和环境变量find_library(MY_LIB NAMES mylib CACHE) # 将查找 mylib 并将其路径存储在 CMake 缓存中,如果已缓存则不再搜索find_library(MY_LIB NAMES mylib mylib2 PATHS /path/to/libs) # 如果 mylib 未找到,find_library 将尝试查找 mylib2<VAR>:存储找到的库文件路径的变量名。NAMES:指定要搜索的库文件名称列表。如果找到多个,将返回第一个找到的库。PATHS:指定要搜索的路径列表。这些路径将与系统路径一起被搜索。NO_DEFAULT_PATH:不使用默认路径和环境变量进行搜索。NO_CMAKE_*_PATH:这些选项分别用于禁用来自 CMake 环境、系统环境变量、CMake 路径和系统路径的搜索。CMAKE_FIND_ROOT_PATH_BOTH、ONLY_CMAKE_FIND_ROOT_PATH、NO_CMAKE_FIND_ROOT_PATH:这些选项控制对于CMAKE_FIND_ROOT_PATH的处理方式。