2013-04-08 3 views
1

Я хотел бы сохранить файл конфигурации, который генерирует другой набор Make-файлов, зависит от того, какие флаги был указан скриптом configure. Чтобы быть более конкретным, я хочу, чтобы make dist сгенерировал подмножество всех каталогов в проекте.условный AC_OUTPUT

Например, предположим, что у меня есть каталоги project/a project/b, project/c с Makefile.am и все другие необходимые материалы, чтобы включить компиляцию проекта с использованием ./autogen.sh && ./configure && make. Предположим, я хочу опустить каталоги project/b project/c из дистрибутива tarball. Я попытался следующие:

AS_IF([test "x$for_dist" == "xyes"], 
     [CONDITIONAL_MAKEFILES=""], 
     [CONDITIONAL_MAKEFILES="b/Makefile c/Makefile"] 
) 

AC_OUTPUT(Makefile a/Makefile ${CONDITIONAL_MAKEFILES}) 

Это не будет работать, я получаю config.status: error: cannot find input file: b/Makefile.in. Если я укажу выходные файлы Makefile без переменной, он отлично работает.

Любые идеи, как сделать эту работу?

Спасибо,

ответ

1

Я нашел решение-

Использование AC_CONFIG_FILES вместо AC_OUTPUT позволяет более гибко. Например, обращаясь к приведенному выше примеру:

AS_IF([test "x$for_dist" == "xyes"], [AC_CONFIG_FILES(b/Makefile c/Makefile)]) 

AC_OUTPUT(Makefile a/Makefile) 

Это будет выводить три Makefiles в случае for_dist имеет значение yes, и выход будет только один Makefile, в противном случае.

+0

Это правда в целом, но в моем конкретном случае мне пришлось опустить некоторые источники. –

+0

Я думал, что это может быть так. Интересно, может ли быть проще установить 'DIST_SUBDIRS' явно? Распространение 'forked' также могло бы «test -d $ {srcdir}/b' игнорировать настройки' for_dist'. –

+0

Что касается 'DIST_SUBDIRS'- Я прочитал, что он должен использоваться для« распространения каталогов, которые не должны быть созданы ». Однако, что касается 'test -d $ {srcdir}/b' - Можете ли вы уточнить? –