1

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

4

1 回答 1

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 $@
于 2013-10-05T15:28:21.840 回答