Как установить переменную в Makefile без указания значения? - PullRequest
0 голосов
/ 07 сентября 2018
#### Makefile.header ####
ifndef Hello
  C_LINK = -switchOne
else
  C_LINK = $(Hello)
endif

#### Makefile ####
...
Hello=
...
include Makefile.header
...

Вопрос> Файл Makefile включает файл Makefile.header.Я хотел бы предоставить пользователю опцию, чтобы он мог настроить C_LINK, отключить значение по умолчанию C_LINK или использовать предопределенный C_LINK.

Случай 1> Настроить переключатель

Пользователь может предоставить значение для Hello, чтобы настроить значение C_LINK.Например,

Hello = -abc -def

Случай 2> Использовать переключатель по умолчанию

Пользователь может использовать значение по умолчанию C_LINK, не определяя переменную Hello внутри файла Makefile.

Случай 3> Отключить переключатель по умолчанию

Пользователь может определить переменную Hello без значения, чтобы отключить C_LINK.Я попытался использовать следующий метод, но он не работает.

Hello =

Компилятор обрабатывает переменную Hello как неопределенную.

Вопрос> Есть ли способ, который я могу определитьпеременная с пустым значением?

Спасибо

1 Ответ

0 голосов
/ 07 сентября 2018

Если вы используете GNU Make, вы можете использовать оператор ?= следующим образом:

Default_Value ?= MainDefault

Value ?= $(Default_Value)

Затем во включенном make-файле вы можете установить свои параметры следующими способами:

# option #1
Value := -abc -def

или

# option #2 (do nothing)

или

#option #3 (clear default) 
Default_Value :=

Теперь # option #1 устанавливает значение, поэтому Makefile не изменит его.

Также # option #2 ничего не делает, поэтому Makefile добавит свой собственный параметр по умолчанию.

И # option #3 устанавливает значение по умолчанию пустым, поэтому Makefile добавит пустое значение в Value.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...