c++ - 首先编译/制作最后修改的 cpp 文件

标签 c++ makefile

当我处理 cpp 文件时,我经常需要更改该 cpp 文件引用的头文件。例如,假设我有三个文件:

common-headerh      [file referred to by both cpp files]
file1.cpp
file2.cpp

在我的 make 文件中,我有等同于以下命令的命令: g++ -std=c++0x 文件1.cpp 文件2.cpp

我想要一个自动重新排序编译顺序的 makefile,以便首先编译最近修改的文件。换句话说,如果最近修改了 file1.cpp,我希望我的 make 文件执行以下操作:

g++ -std=c++0x file1.cpp file2.cpp

但是,如果最近修改了 file2.cpp,我希望生成文件改为:

g++ -std=c++0x file2.cpp file1.cpp

我怎样才能以自动化的方式做到这一点?也欢迎针对特定 IDE/构建环境的回答。


************背景**********

我有一个大型项目(编译大约需要 7 分钟),我的很多代码驻留在头文件的模板中 [在上面的示例中是 common-header.h]。如您所知,如果没有引用 .cpp 文件,模板代码是不能——更准确地说,不能——编译的。假设我想在 file2.cpp 中添加一个新功能,我最终使用模板对其进行编码。这意味着我不得不将我的新代码放入 common-header.h 中。自然地,这些新代码仅在编译 file2.cpp 时才编译。但是,由于头文件被修改,file1.cpp也需要重新编译。这一切都很好,但是假设我在 common-header.h 中的新模板代码中犯了一个基本的错字。然后我必须等待整个 file1.cpp 在 file2.cpp 之前编译。但是,如果先编译 file2.cpp,我会立即知道我的拼写错误,而无需等待 file1.cpp 的编译。

当然,一种快速的解决方案是手动重新编译 file2.cpp。但是,所有错误修复都在头文件中进行:file2.cpp 不是我的 IDE 中的焦点窗口。因此,我必须导航到引用 common-header.h 的正确 cpp 文件并从那里重新编译。更不用说我经常简单地将编译快捷方式与构建快捷方式混淆,不得不中止构建,自然会分心。或者,我干脆放弃并去 youtube 等待整个构建,导致糟糕的生产力。

谢谢你的建议

最佳答案

没有 Elixir 可以像那样减少编译时间,尤其是使用模板时,只有通用方法。您应该看看是否可以减少代码耦合,将 header 分解成几个文件,这样更改就不会影响整个项目。如果您更改随处可见的 header ,则预计会重新编译所有内容。您还可以尝试将当前正在修改的功能与整个项目文件分开,这样编译器就不必在您进行更改时一次又一次地重新编译未更改的代码。此外,如果您愿意,也可以使用预编译 header 。

关于c++ - 首先编译/制作最后修改的 cpp 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38526369/

相关文章:

c - 生成的依赖项与生成的文件

python - 遍历我的数据结构,并为其输入随机值

c++ - Non-Copyable 类是否应该有用户转换

c++ - 如何转换为真与假?

bash - Makefile中的基本if else语句

编译 PHP 扩展

c++ - 由于找不到conanfile.py,使用CMake,conan和Vulkan SDK的Github操作失败

c++ - 如何使用 boost::lockfree::queue 实体填充容器

bash - 如何突出显示 make 输出中的警告和错误行?

linux - 为什么我的 Makefile 变量在使用 tr 后不稳定?