2010-07-08 3 views
0

Я недавно перешел от использования Makefiles с помощью Automake, и я не могу понять, как написать следующий простой, если оператор с помощью Automake:Использование условными в Automake

DEBUG ?= 1 
ifeq (${DEBUG},1) 
CXXFLAGS:=$(CXXFLAGS) -g 
else 
CXXFLAGS:=$(CXXFLAGS) -O3 -DNDEBUG 
endif 

Это даже можно сделать, если я использовать automake? Поскольку он автоматически генерирует make-файл, имеет ли смысл писать его в шаблоне Makefile? Или я должен попытаться найти способ добавления автоматически созданного Makefile?

ответ

1

Нет, вы не можете использовать такой синтаксис с Automake. Точного эквивалента для первых двух строк нет.

Вы могли бы сделать что-то близко используя Automake условной (см Использования условных операторов в руководстве Automake для примера), и установите DEBUG от ./configure. Однако я не вижу в этом смысла: если вы хотите поменять CXXFLAGS глобально, просто измените эту переменную в configure, а не в Makefile.am.

+0

НЕ изменяйте CXXFLAGS в ваших файлах сборки. Пользователь вашего пакета имеет право ожидать, что вы не установите CXXFLAGS. Если вы должны добавить флаги, используйте AM_CXXFLAGS, но оставляйте CXXFLAGS самостоятельно, чтобы пользователь мог установить их по желанию/необходимо. –