реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> gnumake, склейка строк
demiurg_spb
сообщение Apr 30 2008, 11:26
Сообщение #1


неотягощённый злом
******

Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643



Я чего-то не понимаю...
Но у меня никак не получается в зависимости от условий компиляции модифицировать имя цели.
Изобрёл 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.

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


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post
amw
сообщение Apr 30 2008, 11:41
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 601
Регистрация: 22-09-05
Из: Kharkov
Пользователь №: 8 847



Цитата(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
Но оно вставит пробел. ИМХО - это головняк. Лучше сразу присваивать полное имя таргета в зависимости от условий.


--------------------
- А мораль отсюда такова: всякому овощу свое время. Или, хочешь, я это сформулирую попроще: никогда не думай, что ты иная, чем могла бы быть иначе, чем будучи иной в тех случаях, когда иначе нельзя не быть.
© Lewis Carroll. Alice's adventures in wonderland.
Go to the top of the page
 
+Quote Post
MrYuran
сообщение Apr 30 2008, 11:44
Сообщение #3


Беспросветный оптимист
******

Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646



TARGET +=_test
испытайте ещё мой велосипед

crying.gif ну вот, не успел...


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post
andrew_b
сообщение Apr 30 2008, 11:47
Сообщение #4


Профессионал
*****

Группа: Свой
Сообщений: 1 975
Регистрация: 30-12-04
Из: Воронеж
Пользователь №: 1 757



Цитата(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
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Apr 30 2008, 11:54
Сообщение #5


неотягощённый злом
******

Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643



Спасибо всем, а Вам особенно!

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

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


Вот так:

TARGET := $(TARGET)_test

Заработало!

Сообщение отредактировал demiurg_spb - Apr 30 2008, 12:06


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 6th July 2025 - 01:57
Рейтинг@Mail.ru


Страница сгенерированна за 0.02267 секунд с 7
ELECTRONIX ©2004-2016