CMake内部构建与外部构建

CMake内部构建与外部构建

一、内部构建

首先我们使用CMake Tool为我们创建一个简单的工程,当然了,也可以自己手动创建,总的目录结构就是工程目录下一个main.cpp, 一个CMakeLists.txt

如果使用内部构建,我们就在顶层CMakeLists.txt所在的目录执行cmake,看看发生了什么。

cmake .

20221231142043

执行完后,你会发现当前工程目录中多了一对乱七八糟的文件, 如果你原本的工程中有很多源代码文件,那你现在还能找到它们吗?你能够区分哪些是有用的哪些是无用的吗?

20221231142117

内部构建就是这样,它生成了一些无法自动删除的中间文件,所以我们应当极力避免使用内部构建。

二、外部构建

  1. 首先我们把工程目录恢复原样,并在其中建立一个build子目录。当然你也可以在其他任何地方建立build目录,不一定必须在工程中。

    20221231142043

  2. 进入build目录,运行

     cmake ..
    

    注意, … 代表父目录,因为父目录存在我们需要的CMakeLists.txt, 如果你在其他地方建立了build目录,需要运行cmake <path_to_project>, 查看一下build目录,你会发现在其中生成了编译需要的MakeFile以及其他的中间文件。

    20221231143006

  3. 在build目录下运行make构建工程,就会在当前目录,也就是build中获得目标文件,文件名就是你在CMakeLists.txt中指定的工程名。
    20221231143424

上述过程就是所谓的out-of-source外部构建,一个最大的好处就是,对于原有的工程没有任何影响,所有动作全部发生在编译目录中。通过这一点,也足以说服我们全部采用外部编译的方式构建工程。

猜你喜欢

转载自blog.csdn.net/hubing_hust/article/details/128505399