一、内部构建
首先我们使用CMake Tool为我们创建一个简单的工程,当然了,也可以自己手动创建,总的目录结构就是工程目录下一个main.cpp, 一个CMakeLists.txt
如果使用内部构建,我们就在顶层CMakeLists.txt所在的目录执行cmake,看看发生了什么。
cmake .
执行完后,你会发现当前工程目录中多了一对乱七八糟的文件, 如果你原本的工程中有很多源代码文件,那你现在还能找到它们吗?你能够区分哪些是有用的哪些是无用的吗?
内部构建就是这样,它生成了一些无法自动删除的中间文件,所以我们应当极力避免使用内部构建。
二、外部构建
-
首先我们把工程目录恢复原样,并在其中建立一个build子目录。当然你也可以在其他任何地方建立build目录,不一定必须在工程中。
-
进入build目录,运行
cmake ..
注意, … 代表父目录,因为父目录存在我们需要的CMakeLists.txt, 如果你在其他地方建立了build目录,需要运行cmake <path_to_project>, 查看一下build目录,你会发现在其中生成了编译需要的MakeFile以及其他的中间文件。
-
在build目录下运行make构建工程,就会在当前目录,也就是build中获得目标文件,文件名就是你在CMakeLists.txt中指定的工程名。
上述过程就是所谓的out-of-source外部构建,一个最大的好处就是,对于原有的工程没有任何影响,所有动作全部发生在编译目录中。通过这一点,也足以说服我们全部采用外部编译的方式构建工程。