一、删掉整个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

 

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐