我有一个中间源文件foobar.c
它通过 sed 脚本从foobar.c.in
自动生成。 通过自动工具创建dist
目标包括生成的压缩包中的foobar.c
。 在Makefile.am
或configure.ac
中我该怎么做才能排除foobar.c
?
解决方案实际上非常简单
nodist_foobar_SOURCES = foobar.c
BUILT_SOURCES = foobar.c
这样,automake 知道foobar.c
是在构建时生成的,并且由于它是nodist_
因此不会被重新分发。
尽管根据您谈论的字符串类型,解决它的常见方法是使用预处理器宏并将其作为CPPFLAGS
传递
foobar_CPPFLAGS = "-DSOMESTRING="$(somevariable)""
然后只需在代码中使用SOMESTRING
并让预处理器处理它。
我通过将我的问题从使用 sed 脚本修改foobar.c.in
更改为让configure
确定所需的字符串并将它们粘贴到 config.h
中,这包含在 foobar.c
的非中间版本中。 config.h
不包括在压缩包中。
但是,似乎仍然应该有一些方法告诉自动工具从dist tarball中排除某些文件。