指定 `bin_PROGRAMS` 的依赖而不告诉 Automake 如何构建 `bin_PROGRAMS`

Specify a dependency of `bin_PROGRAMS` without telling Automake how to build `bin_PROGRAMS`

所以我的 automake 设置中 bin_PROGRAMS 的一些 *.c 文件依赖于 no_common.h,它是通过从 main.h 创建符号链接生成的,现在先于一些我的 Makefile.am no_common.h 中的最近更改包含在 bin_PROGRAMS 中,因此它会按应有的方式生成,但这也使得它可以安装到 /usr/bin 以及 make 生成的二进制文件,这不是我想要的。

我知道我可以在我的 Makefile.am 文件中使用这样的东西:

$(bin_PROGRAMS): no_common.h

但这是否意味着我必须准确地告诉 make 我希望如何构建 bin_PROGRAMS?将 no_common.h 放回 bin_PROGRAMS 然后将其添加到 noinst_HEADERS 是否可以解决此问题?

这可以做到吗,我可以使用其他一些棘手的技巧,还是我只是在要求一些无法完成的事情?

注意:我不想在受影响的文件中将文件 #includeno_common.h 更改为 main.h。 (是的,我知道我可能很挑剔)。

Automake 提供了 BUILT_SOURCES 变量来解决这个问题。

BUILT_SOURCES 中提到的文件将在 make 的早期创建——在任何编译之前。但是,没有暗示其他依赖关系;也就是说,该文件已创建但未编译,并且未被假定为任何其他特定 .o 的依赖项;这正是你想要的。

所以在你的情况下你只需要做:

BUILT_SOURCES = no_common.h