从autoconf生成的makefile调用外部程序

时间:2013-10-03 17:42:54

标签: makefile autoconf

我在我的项目中使用Google的协议缓冲库。我发现protoc 2.5.0和2.4.1生成的代码之间没有向后兼容性(显然):

#error incompatible with your Protocol Buffer headers. Please 
regenerate this file with a newer version of protoc.

所以我只想添加Makefile规则来调用protoc并在用户的计算机上生成源文件。 (是的,更多不必要的依赖请)

我想为bisonc++flexc++xsd生成的代码添加类似的规则。

该项目位于autohell(GNU autoconf)构建系统。

1 个答案:

答案 0 :(得分:1)

我不知道protoc,但我从Makefile运行其他程序。

在我的案例中,程序生成与平台相关的数据,在交叉编译时不起作用。您可能不需要这些检查。

在configure.ac中:

AM_CONDITIONAL([CROSS_COMPILING], [ test "x$cross_compiling" = xyes ])

在Makefile.am中添加生成的文件(假设您使用automake):

if !CROSS_COMPILING
pkgdata_DATA = generated_file
endif

然后只需编写一个普通的make规则来生成它:

generated_file: input_file
        generate$(EXEEXT) -input $< -output $@