The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"make и ленивое вычиление зависимостей"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы OpenNET: Виртуальная конференция (Public)
Изначальное сообщение [ Отслеживать ]

"make и ленивое вычиление зависимостей"  +/
Сообщение от mahoro (??) on 22-Сен-09, 02:03 
Всем привет!

Столкнулся с необходимостью написания несколько странного make-файла. Странность в том, что список целей нужно прочитать из внешнего источника, и это сделать нужно ленивым образом.

Как-то так:


items = $(shell wget -O - http://example.com)

item:
     a-lot-of-computing --with=$(@)

do-work: $(items)

Проблема в том, что в мейкфайле есть и другие цели, для которых знание содержимого items не требуется, а wget все равно вызывается. В результате - приличный оверхед.

Есть ли способ сделать так, чтобы items вычислялся только когда задана цель do-work? Я игрался с SECONDEXPANSION, с разными способами подстановки переменных, но что-то безуспешно.

При этом нет никаких проблем переписать это в отдельном мейкфайле. Мне просто интересно, можно ли решить проблему без этого или нельзя.

Буду благодарен за помощь!

Высказать мнение | Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "make и ленивое вычиление зависимостей"  +/
Сообщение от gpl77 (ok) on 22-Сен-09, 09:35 
>
>Проблема в том, что в мейкфайле есть и другие цели, для которых
>знание содержимого items не требуется, а wget все равно вызывается. В
>результате - приличный оверхед.
>

.ifmake target
  items =
.endif

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "make и ленивое вычиление зависимостей"  +/
Сообщение от mahoro (??) on 23-Сен-09, 12:18 
У меня обычный GNU make, такая конструкция им не поддерживается..
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "make и ленивое вычиление зависимостей"  +/
Сообщение от gpl77 (ok) on 23-Сен-09, 15:22 
>У меня обычный GNU make, такая конструкция им не поддерживается..

ну, в gnu тоже if/else есть.
главное что:
Conditionals affect which lines of the makefile make uses. If the condition is true, make reads the lines of the text-if-true as part of the makefile; if the condition is false, make ignores those lines ===completely====.

http://www.gnu.org/software/make/manual/make.html#Conditionals


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

4. "make и ленивое вычиление зависимостей"  +/
Сообщение от mahoro (??) on 25-Сен-09, 13:47 
>>У меня обычный GNU make, такая конструкция им не поддерживается..
>
>ну, в gnu тоже if/else есть.

Ага, if/else есть, я не нашел способа узнать цель, которую попросил собрать пользователь..

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

5. "make и ленивое вычиление зависимостей"  +/
Сообщение от gpl77 (ok) on 25-Сен-09, 15:00 
>>>У меня обычный GNU make, такая конструкция им не поддерживается..
>>
>>ну, в gnu тоже if/else есть.
>
>Ага, if/else есть, я не нашел способа узнать цель, которую попросил собрать
>пользователь..

$@


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру