首页 > 解决方案 > 使用 make 和 Cmake 而不是从命令行编译的优点?

问题描述

我总是从命令行在 G++ 下编译我所有的 C++ 代码。

为什么人们使用 Cmake 和 gcc make 之类的东西,有什么优点?

如果确实有理由,我如何将我的项目转换为使用 makefile?

现在,我只使用一个文本文件,其中包含我需要分段编译项目的所有命令列表,当然,如果我觉得我想重新编译每个 c 和 cpp 文件,编译整个项目的那个。

标签: cmakegnu-make

解决方案


我只是使用一个包含编译项目所需的所有命令列表的文本文件......

这不是一个可移植的标准化解决方案,它是您个人工作流程所独有的。A MakefileorCMakefile允许您描述如何将代码编译到计算机而不是人类,因此其他人可以运行一两个简单的命令并(希望)获得与您相同的结果。

您的方法现在可能行得通,但是对于一个包含数千个源文件、数十万个错综复杂的交叉依赖项并且需要数小时编译的非平凡项目,您将需要自动化。

例如,您的文本文件可能包含:

 g++ input.cpp output -lstdc++

这是最简单的情况,一个源文件,一个输出文件,一个库。在非平凡代码中,命令如下所示:

g++ -m32 -c -g -Wall -Iinclude -Isrc -I../Perlingo\ Shared\ Objects -include include -fPIC  -MMD -MP -MF "build/Debug/GNU-Linux-x86/src/BhamEvent.o.d" -o build/Debug/GNU-Linux-x86/src/BhamEvent.o src/BhamEvent.cpp

这只是对您可能需要包含多少标志和选项以正确编译某些内容的尝试。其中一些路径是存储在 or 中的变量,由or之Makefile类的工具放入其中。cmakeconfigure

关于 a 的最好的事情之一Makefile是您可以使用类似的标志进行并行构建,这样-j8可以同时构建多达八件事。


推荐阅读