LINUX.ORG.RU

Ответ на: комментарий от anonymous

> странно.

man make

> А как можно еще передать параметры компиляции, через командную строку?

Никак.

Die-Hard ★★★★★
()

Не понятно. Может с пробелами что-нибудь намудрил?

$cat Makefile
ifeq ($(BUILD),Debug)
all:
        echo Debug: '$(BUILD)'
else
all:
        echo '$(BUILD)'
endif

$make BUILD=
echo ''

$make BUILD=Debug
echo Debug: 'Debug'
Debug: Debug


GNU Make version 3.79.1

amm
()
Ответ на: комментарий от amm

Это при задании целей, прокатывает. А если предварительно до выполнения цели указать ifeq. Ведь условие ifeq проверится make при первом обращении к переменной BUILD или еще предварительно просматривая Makefile?

что-то на подобе:

ifeq ($(BUILD),Debug) CXXFLAGS+=-o0 -g else CXXFLAGS+=-o2 -w endif

.............

$(BUILD)/%.o : $(SOURCE_DIR)/%.cpp $(CXX) -c $(CXXFLAGS) -o $@ $<

anonymous
()
Ответ на: комментарий от anonymous

Всегда пользовался и для задания переменных, и для выбора целей.
Проблем не вижу.

bash-2.05$ more Makefile
ifeq ($(BUILD),Debug)
A=It is debug
else
A=It is normal build
endif

all:
echo $(A)

bash-2.05$ make
echo It is normal build
It is normal build
bash-2.05$ make BUILD=Debug
echo It is debug
It is debug
bash-2.05$

Скорее всего какая-то бучкочка поплыла, может одна буквочка,
а смысл ...

io ★★
()
Ответ на: комментарий от anonymous

> Ведь условие ifeq проверится make при первом обращении к переменной 
> BUILD или еще предварительно просматривая Makefile?

   All instances of conditional syntax are parsed immediately, in their
entirety; this includes the `ifdef', `ifeq', `ifndef', and `ifneq'
forms.

> что-то на подобе:
> ifeq ($(BUILD),Debug) CXXFLAGS+=-o0 -g else CXXFLAGS+=-o2 -w endif
> .............
> $(BUILD)/%.o : $(SOURCE_DIR)/%.cpp $(CXX) -c $(CXXFLAGS) -o $@ $< 

А если через переменную среды 

BUILD=Debug make

то работает нормально?

amm
()
Ответ на: комментарий от io

Заработало, когда все заново переписал. Может быть на самом деле, где ошибка с буковкой была.

Всем большое спасибо!!!!

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.