我有一个中间源文件foobar.c
,它是通过sed脚本从foobar.c.in
自动生成的。通过autotools创建的dist
目标在生成的tarball中包含foobar.c
。我该怎么做Makefile.am
或configure.ac
来排除foobar.c
?
答案 0 :(得分:3)
解决方案实际上很简单
nodist_foobar_SOURCES = foobar.c
BUILT_SOURCES = foobar.c
这样,automake知道foobar.c
是在构建时生成的,因为它在nodist_
中,所以不会重新分发。
虽然取决于你所讨论的字符串类型,解决它的常用方法是使用预处理器宏并将其作为CPPFLAGS
传递
foobar_CPPFLAGS = "-DSOMESTRING=\"$(somevariable)\""
然后在代码中使用SOMESTRING
并让预处理器处理它。
答案 1 :(得分:0)
我通过更改使用sed脚本修改foobar.c.in
到让configure
确定所需的字符串并将其粘贴到config.h
中来解决我的问题,foobar.c
包含在非中介中版本config.h
。 tar包中不包含{{1}}。
然而,似乎应该有一些方法告诉autotools从dist tarball中排除某些文件。