关于c++:杂谈gccmake和cmake

5次阅读

共计 1589 个字符,预计需要花费 4 分钟才能阅读完成。

原创:杂谈_gcc,make 和 cmake

gcc,make,cmake 关系

1.gcc 是 GNU Compiler Collection(就是 GNU 编译器套件),也能够简略认为是编译器,它能够编译很多种编程语言(括 C、C++、Objective-C、Fortran、Java 等等)。
2. 当你的程序只有一个源文件时,间接就能够用 gcc 命令编译它。
3. 然而当你的程序蕴含很多个源文件时,用 gcc 命令一一去编译时,你就很容易凌乱而且工作量大
4. 所以呈现了 make 工具
make 工具能够看成是一个智能的批处理工具,它自身并没有编译和链接的性能,而是用相似于批处理的形式—通过调用 makefile 文件中用户指定的命令来进行编译和链接的。
5.makefile 是什么?简略的说就像一首歌的乐谱,make 工具就像指挥家,指挥家依据乐谱指挥整个乐团怎么样演奏,make 工具就依据 makefile 中的命令进行编译和链接的
6.makefile 命令中就蕴含了调用 gcc(也能够是别的编译器)去编译某个源文件的命令。
7.makefile 在一些简略的工程齐全能够人工手下,然而 当工程十分大的时候,手写 makefile 也是十分麻烦的 ,如果换了个平台 makefile 又要从新批改。
8. 这时候就呈现了 Cmake 这个工具,cmake 就能够更加简略的生成 makefile 文件给下面那个 make 用。当然 cmake 还有其余性能,就是能够跨平台生成对应平台能用的 makefile,你不必再本人去批改了。
9. 可是 cmake 依据什么生成 makefile 呢?它又要 依据一个叫 CMakeLists.txt 文件(学名:组态档)去生成 makefile
10. 到最初 CMakeLists.txt 文件谁写啊?亲,是你本人手写的。
11. 当然如果你用 IDE,相似 VS 这些个别它都能帮你弄好了,你只须要按一下那个三角形
12.cmake 是 make maker,生成各种能够间接管制编译过程的控制器的配置文件,比方 makefile、各种 IDE 的配置文件。
13.make 是一个简略的通过文件工夫戳管制主动过程、解决依赖关系的软件,这个主动过程能够是编译一个我的项目。

原文件—cmakelist —cmake —makefile —make —生成可执行文件(make 中则蕴含了多条链接以及 gcc/g++ 编译语句)。
简略了解


cmake 和 autotools 正是 makefile 的下层工具,它们的目标正是为了产生可移植的 makefile,并简化本人入手写 makefile 时的微小工作量。如果你本人入手写过 makefile,你会发现,makefile 通常依赖于你以后的编译平台,而且编写 makefile 的工作量比拟大,解决依赖关系时也容易出错。因而,对于大多数我的项目,该当思考应用更自动化一些的 cmake 或者 autotools 来生成 makefile,而不是上来就入手编写。

INCLUDE_DIRECTORIES:增加头文件目录
LINK_DIRECTORIES:增加须要链接的库文件目录
LINK_LIBRARIES:增加须要链接的库文件门路,留神这里是全门路

附录

GCC 和 cmake 的关系?:https://www.zhihu.com/questio…
cmake 疾速入门:https://blog.csdn.net/kai_zon…
cmake 从放弃到入门 – 醍醐灌顶(比拟残缺的案例,强烈推荐):https://blog.csdn.net/iceboy3…
cmake 中的 link_directories, LINK_LIBRARIES, target_link_libraries 的区别:https://www.jianshu.com/p/542…
Linux 下 gcc/g++、make 和 cmake 的区别:https://www.cnblogs.com/bokey…

正文完
 0