Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: gnumake
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Cредства разработки для МК > GNU/OpenSource средства разработки
demiurg_spb
Я чего-то не понимаю...
Но у меня никак не получается в зависимости от условий компиляции модифицировать имя цели.
Изобрёл 3 велосипеда, но не один не едет покаsmile.gif

TARGET=Proga1

Вариант1: TARGET = $(TARGET)_test

Вариант2: TARGET = $(join $(TARGET),_test)

Вариант3: TARGET = $(addsuffix _test,$(TARGET))

Во всех трёх случаях ругается (и видимо правильно делает):
*** Recursive variable 'TARGET' references itself (eventually). Stop.

Как можно решить проблему по склейке строк без использования промежуточной переменной?
Спасибо!
amw
Цитата(demiurg_spb @ Apr 30 2008, 14:26) *
Я чего-то не понимаю...
Но у меня никак не получается в зависимости от условий компиляции модифицировать имя цели.
Изобрёл 3 велосипеда, но не один не едет покаsmile.gif

TARGET=Proga1

Вариант1: TARGET = $(TARGET)_test

Вариант2: TARGET = $(join $(TARGET),_test)

Вариант3: TARGET = $(addsuffix _test,$(TARGET))

Во всех трёх случаях ругается (и видимо правильно делает):
*** Recursive variable 'TARGET' references itself (eventually). Stop.

Как можно решить проблему по склейке строк без использования промежуточной переменной?
Спасибо!

А никак. Рекурсия, однако.
Единственно что работает, так это
TARGET += _test
Но оно вставит пробел. ИМХО - это головняк. Лучше сразу присваивать полное имя таргета в зависимости от условий.
MrYuran
TARGET +=_test
испытайте ещё мой велосипед

crying.gif ну вот, не успел...
andrew_b
Цитата(demiurg_spb @ Apr 30 2008, 14:26) *
Во всех трёх случаях ругается (и видимо правильно делает):
*** Recursive variable 'TARGET' references itself (eventually). Stop.
Правильно, не сомневайтесь.

Цитата
Как можно решить проблему по склейке строк без использования промежуточной переменной?
Использованием ':=' вместо '=' при присвоении значения переменной. Про их различие можно почитать в документации на make. Например, здесь: http://www.citforum.ru/operating_systems/g...ake_03.shtml#21
demiurg_spb
Спасибо всем, а Вам особенно!

Цитата(andrew_b @ Apr 30 2008, 15:47) *
Правильно, не сомневайтесь.

Использованием ':=' вместо '=' при присвоении значения переменной. Про их различие можно почитать в документации на make. Например, здесь: http://www.citforum.ru/operating_systems/g...ake_03.shtml#21


Вот так:

TARGET := $(TARGET)_test

Заработало!
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.