300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > Ubuntu学习日记--Lesson10:gcc make makefile cmake cmakelists区别

Ubuntu学习日记--Lesson10:gcc make makefile cmake cmakelists区别

时间:2020-09-21 08:48:34

相关推荐

Ubuntu学习日记--Lesson10:gcc make makefile cmake cmakelists区别

1.gcc是GNU Compiler Collection(就是GNU编译器套件),也可以简单认为是编译器,它可以编译很多种编程语言(括C、C++、Objective-C、Fortran、Java等等)。

2.当你的程序只有一个源文件时,直接就可以用gcc命令编译它。

3.但是当你的程序包含很多个源文件时,用gcc命令逐个去编译时,你就很容易混乱而且工作量大

4.所以出现了make工具

make工具可以看成是一个智能的批处理工具,它本身并没有编译和链接的功能,而是用类似于批处理的方式—通过调用makefile文件中用户指定的命令来进行编译和链接的。比如一个makefile文件:

SUBDIR=src xml #定义变量SUBDIR+= osapi #追加字符串PWD=$(shell pwd) #使用内部函数CXX_SOURCE=$(wildcard ./*.cpp)#同上hello:main.cpp normal.cpp other.cpp normal.hpp other.hpp #目标:依赖echo $@ #打印目标echo $^ #打印依赖项echo $< #打印依赖项的第一项g++ -c main.cpp -o main.og++ -c normal.cpp -o normal.og++ -c other.cpp -o other.og++ main.o normal.o other.o -o helloclean:rm -rf *.otest1:echo $(SUBDIR) #打印变量值,小括号必须test2:@echo $(PWD) #加@后,执行时,在终端不显示该命令行,而是直接显示结果test3:echo $(CXX_SOURCE) #显示源文件名单

命名:

makefile 或 Makefile

5.makefile是什么?

make工具就根据makefile中的命令进行编译和链接的。makefile命令中就包含了调用gcc(也可以是别的编译器)去编译某个源文件的命令。

6.makefile在一些简单的工程完全可以人工手下,但是当工程非常大的时候,手写makefile也是非常麻烦的,如果换了个平台makefile又要重新修改。

7.这时候就出现了Cmake这个工具,Cmake就可以更加简单的生成makefile文件给上面那个make用。当然cmake还有其他功能,就是可以跨平台生成对应平台能用的makefile,你不用再自己去修改了。

可是cmake根据什么生成makefile呢?它又要根据一个叫CMakeLists.txt文件(学名:组态档)去生成makefile。

10.到最后CMakeLists.txt文件谁写啊?亲,是你自己手写的。

11.当然如果你用IDE,类似VS这些一般它都能帮你弄好了,你只需要按一下那个三角形

作者:辉常哥

链接:/question/36609459/answer/89743845

来源:知乎

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

cmake

CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程)。他能够输出各种各样的makefile或者project文件,能测试编译器所支持的C++特性,类似UNIX下的automake。只是 CMake 的组态档取名为 CmakeLists.txt。Cmake 并不直接建构出最终的软件,而是产生标准的建构档(如 Unix 的 Makefile 或 Windows Visual C++ 的 projects/workspaces),然后再依一般的建构方式使用。

最后,CMakeLists.txt文件如何书写和使用呢,网上很多案例,比如/cv-pr/p/6206921.html 在这里就不展开说明啦。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。