是否有任何构建系统允许我们创建不同的"级别"依赖?让我们称呼他们"必要"和"可选" (虽然我知道一些系统对于#34;可选依赖")具有特殊含义。这个想法是允许正常的增量重建和完全重建之间的东西。
A"必需"依赖只是一个普通的makefile依赖。如果更改了依赖关系的时间戳,则会重建目标。如果您键入" make"什么都没有过时,没有任何反应。
"可选"依赖性会说某些目标的输入已经改变,而可以可以重新编译,但目标实际上并不是无效的。
例如,让我们说我在一堆DLL上运行配置文件引导的优化(PGO)。从技术上讲,对代码的任何部分的任何更改都可能使配置文件结果无效,因此我可能想要重新运行PGO。但是,只要所有硬依赖项都已更新,如果我不这样做,程序将完全正确运行。这可能很好,因为PGO可能需要一段时间才能运行。
当然,今天我可以通过从" all"中排除PGO来解决这个问题。目标,并手动调用"制作PGO"如果我想运行它。或者,我可以简单地省略PGO目标的大部分依赖关系,以确保它仅在" make clean之后构建。"但是,这是手动工作,不易推广。
仅重建那些必需依赖项已过期的目标,以及" make -optional"重建任何(或明显需要的)依赖项已过期的目标。
是否有任何构建系统或整齐的makefile技巧支持这种行为?
答案 0 :(得分:1)
如果你愿意,你可以自己动手。如果将OPTIONAL=true
添加到命令行:
make OPTIONAL=true
然后在makefile中,您可以测试OPTIONAL
并在设置该变量时向目标添加先决条件,或者如果不是则添加它们。
我知道没有make(至少)版本可以通过命令行选项使这种东西可用。