CMake Practice 读书笔记

本文是关于CMake的读书笔记,介绍了CMake的主要特点、适用场景、常见问题及解决方案,包括清理临时文件、设置目标二进制路径、安装路径、库格式选择、解决库重名问题、动态库版本管理、静态库链接、编译选项修改、宏编译、测试用例添加、自动添加源代码、调用可执行程序、文件操作、编译器选择、CUDA支持、缓存更新及跨平台支持等。
摘要由CSDN通过智能技术生成

具体问题可以参考官方文档: http://www.cmake.org/cmake/help/v2.8.10/cmake.html#section_Commands

http://zh.wikibooks.org/wiki/CMake_%E5%85%A5%E9%96%80/%E5%8A%A0%E5%85%A5%E7%B7%A8%E8%AD%AF%E9%81%B8%E9%A0%85


CMake的历史是随着KDE4流行开来的,

主要特点

1 开源

2 跨平台

3 能管理大项目KDE4就是最好的证明

4 简化构建和编译过程  CMake+make

我们感受到最实在的就是2 3 4这几点。CMake比直接编辑makefile语法简单,容易上手,更容易扩展,更适应大的和多变的工程。


建议

1 如果你使用的项目只有几个文件,直接用makefile就可以了(考虑到跨平台除外)

2 C/C++/Java之外的请不要用cmake

3 如果你的语言有完整的构建体系,比如java的ant请不要用cmake

4 如果项目已经有比较完备的管理体系,没有必要用cmake

5 如果只是qt编程没有必要用cmake,因为qmake就够了

总是合适就好,不要滥用。


问题1: 如何清理cmake的临时文件

cmake 并不支持 make distclean,关于这一点,官方是有明确解释的:  因为 CMakeLists.txt 可以执行脚本并通过脚本生成一些临时文件,但是却没有办法来跟

踪这些临时文件到底是哪些。因此,没有办法提供一个可靠的make distclean方案。 同时,还有另外一个非常重要的提示,就是:我们刚才进行的是内部构建(in-sourcebuild),而cmake强烈推荐的是外部构建(out-of-source build)。 所以结论是尽量用out of source。


问题2:换个地方保存目标二进制   

SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin)
SET(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/lib)

问题是,我应该把这两条指令写在工程的 CMakeLists.txt 还是 src 目录下的CMakeLists.txt,把握一个简单的原则,在哪里 ADD_EXECUTABLE 或 ADD_LIBRARY,如果需要改变目标存放路径,就在哪里加入上述的定义。 


问题3:如何实现install

INSTALL(TARGETS myrun mylib my
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值