C++高性能并行编程与优化 - 课件 - 16 现代 CMake 模块化项目管理指南万别(没办法,毕竟不是官方的支持嘛),很多都还 是古代 CMake 的用法,例如 $ {XXX_LIBRARIES} 。关于具体使用的细节可以打开 FindXXX.cmake 文件查看,他里面前半部分是注释 ,会讲解如何使用。 • 现在你下载这个文件,放到 cmake/FindXXX.cmake 。然后在你的 CMakeLists.txt 里最上面写一行: • set(CMAKE_MODULE_PATH 文件看看注释,才能确定他是 古代风格还是现代风格。 • 古代 CMake 的命名规范高度不统一,有的是 ${XXX_LIBRARIES} ,有的又是 $ {XXX_LIBRARY} 非常沙雕,需要看相应 cmake 文件的注释,才能确定具体是怎么命名的 。 • 现代 CMake 就好多了,统一用 包名 :: 组件名 的格式。但是具体的组件名,还是要查看 cmake 文件中的注释才能确定。例如 大多都能同时兼容现代和古代 • 大多现代的 Find/Config 文件,都同时兼容 现代和古代的用法。 • 特别古老的 Find 文件,则只能用古代的用法 。 • 例如右图是 FindCURL.cmake 的注释,可以 看到 IMPORTED Targets 章节是在介绍现代 的用法,而 Result Variables 章节是在介绍 古代的用法,我们尽量用现代的那种就行。 官方文档: find_package0 码力 | 56 页 | 6.87 MB | 1 年前3
C++高性能并行编程与优化 - 课件 - 11 现代 CMake 进阶指南find_package 时,就会利用上次缓存的变量,直接返回。 避免重复执行 cmake -B 时速度变慢的问题。 设置缓存变量 语法是: set( 变量名 “变量值” CACHE 变量类型 “注释” ) 缓存的 myvar 会出现在 build/CMakeCache.txt 里 常见问题:我修改了 CMakeLists.txt 里 set 的值,却没有更新? 为了更新缓存变量,有的同学偷懒直接修改0 码力 | 166 页 | 6.54 MB | 1 年前3
共 2 条
- 1













