在我的项目中,我想先构建一个共享库libfoo.so
,然后构建一些使用这个共享库的测试程序。对于测试程序,如果我使用需要
need libfoo.so
然后每次libfoo.so
更新时都会重建它们。相反,我想在libfoo.so
存在并且头文件更改后构建测试程序(或首先构建测试程序)。
对头文件的依赖可以通过gcc -MMD -MF
和来完成needMakefileDependencies
。
我如何表达对存在的依赖libfoo.so
而不每次都强制重建?
谢谢!
在我的项目中,我想先构建一个共享库libfoo.so
,然后构建一些使用这个共享库的测试程序。对于测试程序,如果我使用需要
need libfoo.so
然后每次libfoo.so
更新时都会重建它们。相反,我想在libfoo.so
存在并且头文件更改后构建测试程序(或首先构建测试程序)。
对头文件的依赖可以通过gcc -MMD -MF
和来完成needMakefileDependencies
。
我如何表达对存在的依赖libfoo.so
而不每次都强制重建?
谢谢!
如果我理解正确,您将构建一个库,该库libfoo.so
还生成一些头文件以构建自身。你想编译一些使用这些头文件的程序,但是libfoo.so
如果它改变,依赖于它本身会导致你的程序重新构建,这是过度的。
假设,答案是orderOnly ["libfoo.so"]
。此构造确保libfoo.so
在继续之前构建它(因此头文件是正确的),但实际上并不依赖于它。的主要用途orderOnly
是当您想要构建“很多东西”,然后您扫描它(例如使用gcc -MMD -MF
)以准确确定要依赖的部分。
我想我可以让shake每次libfoo.so
构建一个内容固定的临时文件,让测试程序依赖这个临时文件。这个临时文件标志着libfoo.so
.