我在我的项目中使用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
)构建系统。
答案 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 $@