一:cmake
cmake是一个跨平台的编译工具,可以用简单的语言描述所有平台的编译过程。如果我们正常想要编译一个project是怎样做的呢?
g++ -o pojname Main.cpp Test.cpp
如果文件数目特别多的时候,每次编译我们都要输入很长的一段。但是如果我们把文件之间的关系记录到一个单独的文件里面,编译的时候直接根据这个文件生成相应的代码,那我们就不需要输入像上面那样很长的指令了。
还记得上面说的吗,cmake是一个跨平台的编译工具。它允许开发者编写一种平台无关的 CMakeList.txt 文件来定制整个编译流程,然后再根据目标用户的平台进一步生成所需的本地化 Makefile 和工程文件。
二:makefile
Makefile是linux下面的文件
通常依赖于你当前的编译平台,而且编写makefile的工作量比较大,解决依赖关系时也容易出错。因此,对于大多数项目,应当考虑使用更自动化一些的 cmake或者autotools来生成makefile,而不是上来就动手编写。
三:cmakelist.txt
允许开发者编写的一种平台无关的文件来定制整个编译的流程。
四:怎样自己写makefile
https://www.ruanyifeng.com/blog/2015/02/make.html
1. 命令
temp1.txt : temp2.txt temp3.txt temp4.txt
cp temp2.txt temp1.txt
上面这个命令就是temp1.txt的创建需要temp2.txt temp3.txt temp4.txt都存在,并且创建的方式是temp2.txt复制。
2. 多条命令必须加\ 或者采用其他方法(看上面连接)
不然两条命令会在两个shell进程中执行。
var-kept:
export foo=bar; \
echo "foo=[$$foo]"
3. 屏蔽命令输出 用 @
test:
@mkdir temp
#如果没有@的时候,执行make test,shell会显示mkdir temp。通过@可以对真正执行命令进行屏蔽 。