PS:之前一直是在Windows用VS,感觉很方便,自己新建个工程,不论是编译还是调试,都有现成的,IDE都帮你集成好了,按几个键就好了 ~
一、makefile 和 make
『敲黑板!!!make 并不只是编译.c,还有链接目标文件啊』
PS:又发现自己理解偏差了,makefile里写的规则并不只有将.c 编译为目标文件,肯定有链接,但是,我之前看make的解释都是什么编译多个文件,以为没有链接的功能,我之前一直觉得很奇怪,为什么 make 之后就可以运行可执行文件了,还没有链接呢,感觉自己太年轻了 ~
1. 编译器和 make
编译器是编译一个文件
make是编译多个源文件的工具,通过调用makefile文件中,用户指定的命令来进行编译和链接的,看作是编译器的调度器
2. makefile 文件
一个工程中有很多源文件,makefile定义了整个工程的编译规则,哪些文件先编译,哪些文件后编译,哪些文件重新编译。malefile是自动化编译,一旦写好,只需一个make,整个工程自动编译。
生成阶段将生成用户指定类型(如Visual Studio或GNU/Linux GCC)的构建文件
二、CmakeList.txt 和 CMake
1. CMake 的优势
http://gclxry.com/use-cmake-on-windows/
因为有好几种 Make 工具,例如 GNU Make ,QT 的 qmake 等等。这些 Make 工具遵循着不同的规范和标准,执行的 Makefile 格式也不同。如果想跨平台,在不同平台编译,而如果使用上面的 Make 工具,就得为每一种标准写一次 Makefile 。
CMake就是针对上面问题所设计的工具,首先允许开发者编写一种『 平台无关 』的 CMakeList.txt 文件来定制整个编译流程,然后再根据目标用户的平台进一步生成本地化的 Makefile 或工程文件,如 Unix 的 Makefile 或 Windows 的 Visual Studio 工程。
2. CMake 的使用原理
CMake是种跨平台编译工具,Cmake 将 CMakeList.txt 转化为make 需要的 makefile 文件,用make编译