cmake是个神奇的东西。稍微花了点时间学习了一下下。
先列出参考资料:
cmake tutorial
在 linux 下使用 CMake 构建应用程序
其实我只看了第二个。
最简单的例子
最简单的例子就两个文件
- main.cpp
- CMakeLists.txt
这都是从第二个参考资料抄来的。源代码我也顺便贴一下。
#include<iostream>
int main()
{
std::cout<<"Hello word!"<<std::endl;
return 0;
}
PROJECT(main)
CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
AUX_SOURCE_DIRECTORY(. DIR_SRCS)
ADD_EXECUTABLE(main ${DIR_SRCS})
使用的步骤是:
cmake .
make
还是挺简单的吧。
Makefile结构的分析
cmake的语法分析不是本文重点,本文重点是生成的Makefile结构是什么样子的。说实话,有点变态啊。
尝试画一个结构图:
Makefile
|
+--- CMakeFiles/Makefile2
|
+ --- CMakeFiles/main.dir/build.make
每一个cmake出来的工程都有一个目录 CMakeFiles,所有的东西都在这个里面了。
这个目录中都会有一个文件Makefile2,这是一个隐藏boss。不同目录,不同目标的处理在这个文件中。
比如我们的main.cpp就被单独列出了一个目录CMakeFiles/main.dir/。而这个目录中最后才包含了真正编译main.cpp规则的文件--CMakeFiles/main.dir/build.make。
更改规则重新编译
这点cmake有点土,需要手动清除配置的文件。
make clean
find . -name "CMakeCache.txt" | xargs rm -f
find . -name "CMakeFiles" | xargs rm -rf
cmake
当然为了节省点时间,可以只删除特定目录下的配置文件。
好了,凑合先写到这里吧。
网友评论