Makefile 指定“bin\u程序”的依赖项,而不告诉Automake如何生成“bin\u程序”`
因此,在我的automake设置中,Makefile 指定“bin\u程序”的依赖项,而不告诉Automake如何生成“bin\u程序”`,makefile,build,gnu-make,automake,Makefile,Build,Gnu Make,Automake,因此,在我的automake设置中,bin_程序的一些*.c文件依赖于通过从main.h创建符号链接而生成的no_common.h,现在,在我的Makefile.am最近做了一些更改之前,bin\u程序中包含了h,这样它就可以像应该的那样生成,但这也使得它可以与make生成的二进制文件一起安装到/usr/bin,这不是我想要的 我知道我可以在我的Makefile.am文件中使用类似的内容: $(bin_PROGRAMS): no_common.h 但这难道不意味着我必须告诉make我希望如何构
bin_程序的一些*.c
文件依赖于通过从main.h
创建符号链接而生成的no_common.h
,现在,在我的Makefile.am
最近做了一些更改之前,bin\u程序
中包含了h
,这样它就可以像应该的那样生成,但这也使得它可以与make
生成的二进制文件一起安装到/usr/bin
,这不是我想要的
我知道我可以在我的Makefile.am
文件中使用类似的内容:
$(bin_PROGRAMS): no_common.h
但这难道不意味着我必须告诉make
我希望如何构建bin_程序?将no\u common.h
放回bin\u程序中,然后将其添加到noinst\u头中,可以解决此问题吗
这是可以做到的吗?我是否可以使用其他一些棘手的技巧,或者我只是要求一些做不到的事情
注意:我不想将受影响文件中的文件\include
从no\u common.h
更改为main.h
。(是的,我知道我可能很挑剔) Automake提供了内置源
变量来解决此问题
在编译之前,build\u SOURCES
中提到的文件将在make
的早期创建。然而,没有暗示其他依赖关系;也就是说,文件是创建的,但不是编译的,也不是任何其他特定.o
的依赖项;这正是你想要的
因此,在您的情况下,您只需执行以下操作:
BUILT_SOURCES = no_common.h
Automake提供了build\u SOURCES
变量来解决此问题
在编译之前,build\u SOURCES
中提到的文件将在make
的早期创建。然而,没有暗示其他依赖关系;也就是说,文件是创建的,但不是编译的,也不是任何其他特定.o
的依赖项;这正是你想要的
因此,在您的情况下,您只需执行以下操作:
BUILT_SOURCES = no_common.h