在我的项目中,我想先构建一个共享库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.