指定 `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
是否可以解决此问题?
这可以做到吗,我可以使用其他一些棘手的技巧,还是我只是在要求一些无法完成的事情?
注意:我不想在受影响的文件中将文件 #include
从 no_common.h
更改为 main.h
。 (是的,我知道我可能很挑剔)。
Automake 提供了 BUILT_SOURCES
变量来解决这个问题。
BUILT_SOURCES
中提到的文件将在 make
的早期创建——在任何编译之前。但是,没有暗示其他依赖关系;也就是说,该文件已创建但未编译,并且未被假定为任何其他特定 .o
的依赖项;这正是你想要的。
所以在你的情况下你只需要做:
BUILT_SOURCES = no_common.h
所以我的 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
是否可以解决此问题?
这可以做到吗,我可以使用其他一些棘手的技巧,还是我只是在要求一些无法完成的事情?
注意:我不想在受影响的文件中将文件 #include
从 no_common.h
更改为 main.h
。 (是的,我知道我可能很挑剔)。
Automake 提供了 BUILT_SOURCES
变量来解决这个问题。
BUILT_SOURCES
中提到的文件将在 make
的早期创建——在任何编译之前。但是,没有暗示其他依赖关系;也就是说,该文件已创建但未编译,并且未被假定为任何其他特定 .o
的依赖项;这正是你想要的。
所以在你的情况下你只需要做:
BUILT_SOURCES = no_common.h