【问题标题】:Specify a dependency of `bin_PROGRAMS` without telling Automake how to build `bin_PROGRAMS`指定 `bin_PROGRAMS` 的依赖项而不告诉 Automake 如何构建 `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 会解决此问题吗?

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

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

【问题讨论】:

    标签: makefile build gnu-make automake


    【解决方案1】:

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

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

    所以在你的情况下,你只需这样做:

    BUILT_SOURCES = no_common.h
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-29
      • 2018-03-06
      • 1970-01-01
      • 2012-11-11
      • 2012-01-03
      相关资源
      最近更新 更多