指定 `bin_PROGRAMS` 的依赖项而不告诉 Automake 如何构建 `bin_PROGRAMS`
Posted
技术标签:
【中文标题】指定 `bin_PROGRAMS` 的依赖项而不告诉 Automake 如何构建 `bin_PROGRAMS`【英文标题】:Specify a dependency of `bin_PROGRAMS` without telling Automake how to build `bin_PROGRAMS` 【发布时间】:2016-09-17 00:48:39 【问题描述】:因此,在我的 automake 设置中 bin_PROGRAMS
中的一些 *.c
文件依赖于通过从 main.h
创建符号链接生成的 no_common.h
,现在在我的 Makefile.am
no_common.h
的一些最近更改之前被包含在bin_PROGRAMS
中,以便它按应有的方式生成,但这也使它与make
生成的二进制文件一起安装到/usr/bin
中,这不是我想要的.
我知道我可以在我的 Makefile.am
文件中使用类似的东西:
$(bin_PROGRAMS): no_common.h
但这是否意味着我必须告诉make
我希望bin_PROGRAMS
如何构建?将no_common.h
放回bin_PROGRAMS
然后将其添加到noinst_HEADERS
会解决此问题吗?
这可以做到吗,我可以使用其他一些棘手的技巧,还是我只是要求一些无法做到的事情?
注意:我不想在受影响的文件中将文件 #include
从 no_common.h
更改为 main.h
。 (是的,我知道我可能很挑剔)。
【问题讨论】:
【参考方案1】:Automake 提供了BUILT_SOURCES
变量来解决这个问题。
BUILT_SOURCES
中提到的文件将在make
早期创建——在任何编译之前。但是,没有暗示其他依赖关系;也就是说,该文件已创建但未编译,并且不假定为任何其他特定 .o
的依赖项;这正是你想要的。
所以在你的情况下,你只需这样做:
BUILT_SOURCES = no_common.h
【讨论】:
以上是关于指定 `bin_PROGRAMS` 的依赖项而不告诉 Automake 如何构建 `bin_PROGRAMS`的主要内容,如果未能解决你的问题,请参考以下文章