2013-06-07 2 views
0

, когда я хочу, чтобы передать переменные косметическим файл из командной строки, я сделать что-то вроде этого:назначая Makefile переменные из командной строки

make Variable="bla bla" 

но что, если я хочу, чтобы добавить переменную ??

Я попытался это:

make Variable+="bla bla" 

Он генерирует компилятор или ошибку компоновщика, как будто я ничего не добавил. так или иначе?

ответ

1

Просто используйте синтаксис VAR += word в своем Makefile, а не VAR = word. Затем в командной строке,

make VAR="bla bla" 

делает VAR старт с «бла-бла», а затем остальных слов, назначенных в Makefile.

Предполагается, что ваш make поддерживает += синтаксис.

Другой способ заключается в использовании двух различных переменных, говорят, VAR_CMDLINE и VAR_MAKE, где в вашем Makefile у вас есть

VAR_MAKE = whatever default value $(VAR_CMDLINE) 
all: 
     echo $(VAR_MAKE) 

и запустить его как make VAR_CMDLINE="my additions". Это как портативный POSIX, как он получает.

+0

lol, что является блестящим. похоже, что мой make не поддерживает + = хотя, это не сработало. как я могу убедиться, что он поддерживает или нет? – ProWi

+1

Затем я предлагаю вам установить GNU make (aka gmake). У него есть все возможности, которые вы могли бы захотеть, а затем некоторые. – Jens

+2

Использование '+ =' не будет работать. Назначение в командной строке имеет более высокий приоритет, чем в файле makefile, и полностью отменяет его. Есть способы обойти это, но это не нравится, и определенно не переносится. Второе предложение является правильным. – MadScientist