可移植性:由于CPM.cmake基于CMake,因此它具有良好的可移植性。无论你的项目是在Windows、Linux还是macOS上构建,都可以使用CPM.cmake来管理依赖项。 接下来,我们将通过一个简单的示例来了解如何配置和使用CPM.cmake。 安装CPM.cmake 首先,你需要将CPM.cmake文件添加到你的项目根目录中。你可以从CPM的官方GitHub仓...
有的第三方库对 CMake 过于友好,可以直接复制整个源码到当前项目,然后使用add_subdirectory()将其作为子项目参与生成和编译,然后在其它子项目中使用,无论本地项目有没有依赖这个子项目,它都会被生成和编译。 例如spdlog 支持如下两种风格的使用: 作为外部项目,安装后导入 find_package(spdlog REQUIRED) target_link_l...
CPM.cmake是在 FetchContent 的基础上封装而来,相比 FetchContent 更加简单易用,使用CPM需要到CPM.cmake下载cmake目录的文件CPM.cmake、get_cpm.cmake和testing.cmake,添加到项目当中。 工程文件目录 ├── CMakeLists.txt ├── cmake │ ├── CPM.cmake │ ├── get_cpm.cmake │ └── testing...
02 hello world工程 - CMake的跨平台使用(Window和Linux), 视频播放量 166、弹幕量 0、点赞数 2、投硬币枚数 0、收藏人数 7、转发人数 0, 视频作者 京胖子丁牌讲师, 作者简介 凡是过往,皆为序章。行而不辍,道阻且长。,相关视频:04 QuickJS - FLTK, ffi - Hello World
总结一下就是这个功能有,但是使用起来还是挺麻烦的,也有人为了简化这种配置,基于这个功能整了一个 cpm,可惜现在已经不再维护了,而且里面很多库也都找不到 在发现这个依赖管理之前,我们是通过 shell 脚本来下载依赖的,虽然丑陋一点,但也基本能解决依赖的问题,相比之下,这种方式统一在了CMakeLists.txt里面,可读性上...
总结一下就是这个功能有,但是使用起来还是挺麻烦的,也有人为了简化这种配置,基于这个功能整了一个 cpm,可惜现在已经不再维护了,而且里面很多库也都找不到 在发现这个依赖管理之前,我们是通过 shell 脚本来下载依赖的,虽然丑陋一点,但也基本能解决依赖的问题,相比之下,这种方式统一在了CMakeLists.txt里面,可读性上...
message(STATUS "Downloading CPM.cmake") file(DOWNLOAD https://github.com/TheLartians/CPM.cmake/releases/download/v${CPM_DOWNLOAD_VERSION}/CPM.cmake ${CPM_DOWNLOAD_LOCATION}) endif() include(${CPM_DOWNLOAD_LOCATION}) 参考: https://github.com/variar/klogg/blob/master/cmake/Sanitizers.cmake...
如果你决定使用 FetchContent,不妨考虑一下 CPM 这个 CMake 扩展。CPM 在 FetchContent 和传统的 Package dependency 的基础之上做了很多整合,支持:指定一个全局的三方源码依赖缓存文件夹,避免多个项目重复拉取同一个版本的依赖源码通过参数 fallback 到 find_package() 的方式使用 local package。依赖的 options 控制...
CMakeLists.txt里使用find_package用来查找已经安装的软件包。 find_package(OpenSSL REQUIRED) target_link_libraries(my_program OpenSSL::SSL OpenSSL::Crypto) 1. 2. 这将查找 OpenSSL 的 .pc 文件,并在链接时自动添加 OpenSSL 库和头文件。如果没有找到对应的软件包,会出现错误提示。后面还会...
│ └── CPM.cmake# 依赖项拉取工具 ├── module# 代码父目录 │ ├── CMakeLists.txt# module的CMake,包含a和b两个子目录 │ ├── sub_module_a# 模块a目录 │ │ ├── CMakeLists.txt# 子模块a的cmake配置 │ │ ├── config# 目录:模块a配置文件目录 ...