2013-10-03 2 views
1

Я использую библиотеку протоколов протоколов Google в своем проекте. Я обнаружил, что нет обратной совместимости между protoc 2.5.0 и 2.4.1 сгенерированного кода (очевидно):Вызов внешней программы из созданного autoconf файла makefile

#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

Я не знаю 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 [email protected] 
Смежные вопросы