如何编译 c++ 文件的子集,这样我就不必编译其他文件 MinGW
Posted
技术标签:
【中文标题】如何编译 c++ 文件的子集,这样我就不必编译其他文件 MinGW【英文标题】:How to compile a subset of c++ files so that I do not have to compile the other files MinGW 【发布时间】:2015-07-09 11:54:53 【问题描述】:问题是:我想拆分我的程序主要是为了编译时间,其次是为了便于编写程序。我正在使用我自己编写的“compile.bat”程序,其中包含g++ -o prog.exe main.cpp -lmingw32 -lSDLmain -lSDL
pause >nul
以便进行编译(如标题中所述,MinGW 用于编译)但问题是,尽管我可以轻松添加在“prog.exe”之后的列表中有更多要编译的文件(现在它是一个文件列表,所以它不是一个列表),我不知道如何预编译一些文件然后编译一个或其他两个文件来完成编译并制作“prog.exe”文件。我遇到了这个想法,因为我正在阅读如何通过仅重新编译您更改的文件来最大限度地减少大型程序的编译时间的常见做法。如果这个问题太具体、离题或重复,请告诉我。 :¬)
【问题讨论】:
顺便说一句,libSDL 存在于 Linux 上,这是一个非常友好的开发环境... 投反对票的原因是什么?这不是一个合理的问题吗?至少告诉我为什么 我没有投反对票,但你显然错过了一些先前的研究...... @BasileStarynkevitch 研究此类问题的问题在于 google 无法正常工作,因为它太具体且单词太多。当涉及到几乎所有搜索引擎时,尝试搜索您不知道其名称的东西是非常困难的,更不用说当您尝试查找的东西需要大约十几个词来描述时,但我很欣赏先前的研究强烈建议在提出问题之前,这基本上是一项要求。 【参考方案1】:您需要学习如何使用一些构建器程序(请参阅build automation),例如GNU make。您将通过Makefile
描述您的构建(here 是一个示例),make
将检查时间戳并仅重新编译需要的内容(根据您的 Makefile
中给出的规则和依赖项等。 .).
有几个替代构建器(例如omake、scons)并且存在Makefile
生成器(例如cmake、automake)
对于包含几十个文件的小型项目,我建议您自己编写Makefile
代码(不要使用任何Makefile
生成器)。使用特定于最近的 GNU make
的功能,甚至可能是 guile 脚本功能。
依赖规则应该描述头文件inclusion。 g++
的 -M
preprocessor options 应该很容易生成它们。
查看与您类似的现有free software 的源代码以获取灵感。
【讨论】:
以上是关于如何编译 c++ 文件的子集,这样我就不必编译其他文件 MinGW的主要内容,如果未能解决你的问题,请参考以下文章
我应该如何检测大型 C++ 项目中不必要的#include 文件?
我应该如何检测大型 C++ 项目中不必要的#include 文件?