2012-03-27 3 views
1

Я видел предыдущие сообщения SO 1, 2 и т. Д. Я хочу передать директиву препроцессора во время компиляции. Со школотами я мог бы сделать:makefile: передача препроцессора через makefile в g ++

num_times = ARGUMENTS.get('c', 1) 
env.Append(CCFLAGS = '-DNUM_TIMES=%d' % int(num_times)) 

Надеюсь, это также должно быть возможно с использованием марки. Я хочу выпустить

make c=4 

или что-то в этом роде. Может кто-нибудь предложить метод. Я собираю папку, в которой есть вложенные папки с их собственными make-файлами. Заранее спасибо.

ответ

1

Один простой подход, чтобы сделать:

CFLAGS += -DNUM_TIMES=$(c) 
export CFLAGS 

all: 
    $(MAKE) -C your_subfolder 

вызов с make c=2 и не трогать CFLAGS в Makefiles подпапке.

Другой иметь Makefile часть в корневой папке со всеми общими настройками, которые вы include в подкаталоге Makefiles (с include). ($(MAKE) гарантирует, что аргументы командной строки, которые вы указали для make, также будут переданы в подблоки.)

+0

Спасибо. Все в порядке, если make-файлы: CFLAGS + = $ (CXXFLAGS) – user984260

+0

Просто убедитесь, что вы не делаете то же самое в главном файле makefile и в подфайле и в то же время экспортируете в основном - Я получу вещи в ваших переменных, что может быть проблематично. Лучше всего (вероятно) не «экспортировать», а иметь общий фрагмент make, который вы включаете везде с нужными настройками. – Mat

Смежные вопросы