Module 模式是出于历史原因和兼容性考虑:由于某些冷门的库对 modern cmake 支持性较差,CMake 官方会附带常见库的 FindXXX.cmake,或者用户可以自行编写 FindAbc.cmake(必须非常熟悉这个库和 CMake 语法) find_package 对两种模式的使用顺序:(推荐使用默认策略即可) 默认先尝试 Module 模式,没有找到则尝试 Config ...
示例: target_link_libraries(main PRIVATE spdlog::spdlog) 2.7 find_package 功能: 查找外部库并引入。常用于查找系统库或第三方库。 示例: find_package(spdlog REQUIRED) 2.8 include_directories 功能: 添加头文件搜索路径。 示例: include_directories(${CMAKE_SOURCE_DIR}/include) ...
首先,cmake本身不提供任何搜索库的便捷方法,所有搜索库并给变量赋值的操作必须由cmake代码完成,比如FindXXX.cmake和XXXConfig.cmake。只不过,库的作者通常会提供这两个文件,以方便使用者调用。 find_package采用两种模式搜索库: Module模式:搜索CMAKE_MODULE_PATH指定路径下的FindXXX.cmake文件,执行该文件从而找到XXX...
一个好消息是 CMake 官方为我们写好了很多 Find file,在CMake Documentation这一页面可以看到,OpenGL,OpenMP,SDL 这些知名的库官方都为我们写好了 Find 脚本,因此直接调用 find_package 命令即可。但由于库的安装位置并不是固定的,这些 Find 脚本不一定能找到库,此时根据 CMake 报错的提示设置对应变量即可,通常是...
假设要在项目中使用 spdlog 这个开源的日志工具. 创建一个 cmake 项目, 项目中包含如下几个文件: CMakeLists.txt cmake_minimum_required(VERSION3.20)set(CMAKE_TOOLCHAIN_FILE"$ENV{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake")project(test VERSION0.1.0LANGUAGES C CXX)find_package(spdlog CONFIG REQUIRED...
./vcpkg install spdlog 2. 编写 CMakeLists.txt 在您的项目根目录中创建或编辑CMakeLists.txt文件,包括以下内容: 项目信息:指定项目名称和所需的 CMake 最小版本。 设置vcpkg工具链:确保 CMake 使用vcpkg的工具链文件。 查找库:使用find_package来查找和配置vcpkg安装的库。
为了实现更通用的链接策略,CMake提供了find_package命令。使用TBB::tbb伪对象,除了指向库路径外,还会添加一些公共属性,如SPDLOG_NOT_HEADER_ONLY,以便直接包含头文件或链接库版本。此方法较直接链接更灵活,可兼容多种平台。对比古代CMake需要手动引入FindTBB.cmake文件,现代CMake内置了TBBConfig.cmake...
I tried multiple ways to add the vcpkg's spdlog packages to my CMakeLists.txt, including the following one suggested by vcpkg install command: find_package(spdlog CONFIG REQUIRED) target_link_libraries(main PRIVATE spdlog::spdlog) My cmake command is like below: ...
Git 将 spdlog 存储库克隆到 include 目录,名称为 spdlog 创建third-party\spdlog\CMakeLists.txt 内容如下 find_package(Threads REQUIRED) add_library(${TARGET_LOGGER} INTERFACE) # add_library(spdlog::spdlog_header_only ALIAS ${TARGET_LOGGER}) target_include_directories(${TARGET_LOGGER} INTERFACE "$...
set(spdlog_DIR "c:/cpp/spdlog/lib/cmake/spdlog") find_package(spdlog REQUIRED) set(pugixml_DIR "c:/cpp/pugixml/lib/cmake/pugixml") find_package(pugixml REQUIRED) I am now seeking to add googletest (GTest). I have added the following (after discovering I needed to use ROOT not DIR ...