我们如何将代码生成集成到构建系统中?
对于具有代码生成功能的源代码,尽管更改了一行代码生成以创建新生成的文件,但会重新生成所有代码。在这个新生成的代码中,尽管大部分代码保持不变,但构建系统(Make)只查看修改日期,并决定重新编译所有生成的代码。make/cmake/bazel是否提供了基于文件更改而不是修改日期来检查依赖关系的工具?
是否有其他构建系统考虑生成的代码是否需要重新编译,而不是使用修改日期,而是使用文件更改本身?
发布于 2021-06-30 21:47:27
Bazel使用散列来确定必须执行的操作。例如,您可以通过添加新的空行来修改C++文件。文件将被重新编译,但不会触发下一步操作(如链接库),因为编译的输出将保持不变(可能是因为它依赖于使用的编译器)。That movie is a good introduction
Make/忍者一定要使用时间戳。CMake并不关心,因为整个文件比较机制被委托给底层构建系统
https://stackoverflow.com/questions/68195723
复制相似问题