具体问题可以参考官方文档: 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