2

在我的项目中,我想先构建一个共享库libfoo.so,然后构建一些使用这个共享库的测试程序。对于测试程序,如果我使用需要

need libfoo.so

然后每次libfoo.so更新时都会重建它们。相反,我想在libfoo.so存在并且头文件更改后构建测试程序(或首先构建测试程序)。

对头文件的依赖可以通过gcc -MMD -MF和来完成needMakefileDependencies

我如何表达对存在的依赖libfoo.so而不每次都强制重建?

谢谢!

4

2 回答 2

0

如果我理解正确,您将构建一个库,该库libfoo.so还生成一些头文件以构建自身。你想编译一些使用这些头文件的程序,但是libfoo.so如果它改变,依赖于它本身会导致你的程序重新构建,这是过度的。

假设,答案是orderOnly ["libfoo.so"]。此构造确保libfoo.so在继续之前构建它(因此头文件是正确的),但实际上并不依赖于它。的主要用途orderOnly是当您想要构建“很多东西”,然后您扫描它(例如使用gcc -MMD -MF)以准确确定要依赖的部分。

于 2016-02-01T14:49:44.023 回答
0

我想我可以让shake每次libfoo.so构建一个内容固定的临时文件,让测试程序依赖这个临时文件。这个临时文件标志着libfoo.so.

于 2016-01-25T00:16:01.970 回答