使用cmake时 什么时候删掉整个build,什么时候只需要make clean
·
一、删掉整个build
首先,cmake..的作用是帮助我们生成makefile文件。学过makefile编写的应该知道,里面就是我们在命令行中编译的一行行命令。
例如下面这种:
所以只要这些命令(makefile的内容)不用修改的话,我们就不需要删掉整个build文件,然后重新使用cmake..命令。
那什么时候makefile的内容会被修改呢?比如生成的可执行文件名称我们想换一个,或者源码中引入了新的第三方库。这些变化都要在gcc命令中添加或者改动,就需要生成新的makefile了。
当使用cmake时,以上类似于“生成的可执行文件名称我们想换一个”这种变化就发生在CMakeList.txt里。
所以结论就是,当我们更改了CMakeList.txt后再编译,就需要删掉整个build文件夹,然后重新编译。走下面的流程
rm -rf build
mkdir build
cd build
cmake ..
make
二、只需要make clean
先说结论,当源文件发生改变时,只需要make clean重新编译就行了。比如在源文件中,添加了一行
cout<<"hello!"<<endl;
然后我们再去编译的时候只需要在build目录下,输入
make clean
因为,如果makefile的内容不会改变时,就不需要经过cmake..这一步重新生成makefile文件了。显然加入一行输出语句对于makefile的内容不会有任何影响。
ps: 记录一下make clean的功能
make命令可以让新生成的去覆盖旧的,但是有一些上次生成了这次不需要生成他的文件,就没法删除了。
(比如上次使用make生成了文件a,文件b,文件c,这次使用make命令只需要生成文件a和文件b,并且文件a有所变化。那么这次生成的文件a会覆盖上次的文件a;上次生成的文件b保持不动,这次不需要再费劲生成一遍了;而上次生成的文件c也保持不动,尽管这次不需要文件c)
所以才需要make clean一下,删除所有被make创建的文件。
ps:什么是build
更多推荐
已为社区贡献12条内容
所有评论(0)