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

 
 
> не работает рекурсивный вызов make, make -C $dir
Сергей Борщ
сообщение Mar 30 2008, 21:44
Сообщение #1


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Ситуация смешна.
makefile:
Код
SUBDIRS =
SUBDIRS += ./a
SUBDIRS += ./b

all:
    for subdir in $(SUBDIRS); do echo ===== building $$subdir =====;$(MAKE) -C $$subdir all; done

результат:
Код
for subdir in  ./a ./b; do echo ===== building $subdir =====;C:/Programs/UNIX_U~1/make.EXE -C $subdir all; done
===== building ./a =====
make.EXE[1]: Entering directory `C:/tmp'
for subdir in  ./a ./b; do echo ===== building $subdir =====;C:/Programs/UNIX_U~1/make.EXE -C $subdir all; done
===== building ./a =====
make.EXE[1]: Entering directory `C:/tmp'
for subdir in  ./a ./b; do echo ===== building $subdir =====;C:/Programs/UNIX_U~1/make.EXE -C $subdir all; done
===== building ./a =====
make.EXE[1]: Entering directory `C:/tmp'
for subdir in  ./a ./b; do echo ===== building $subdir =====;C:/Programs/UNIX_U~1/make.EXE -C $subdir all; done
и так до бесконечности. Вызов "вручную" make -C ./a работает. Эффект проявляется на двух компах, на двух других все работает. make на всех компах одинаковый, от WinAVR. make от yagarto ведет себя также. Винда ХР.
Цитата
GNU Make 3.81
Copyright © 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.

This program built for i386-pc-mingw32
Что я мог поломать?


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
amw
сообщение Apr 2 2008, 08:34
Сообщение #2


Знающий
****

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



Цитата(Сергей Борщ @ Mar 31 2008, 00:44) *
Ситуация смешна.
makefile:
Код
SUBDIRS =
SUBDIRS += ./a
SUBDIRS += ./b

all:
    for subdir in $(SUBDIRS); do echo ===== building $$subdir =====;$(MAKE) -C $$subdir all; done

А если так:
Код
SUBDIRS =
SUBDIRS += ./a
SUBDIRS += ./b

all: $(SUBDIRS)

$(foreach f, $(SUBDIRS), $(f)):
    @echo "===== building $@ ====="
    @$(MAKE) -C $@ all

.PHONY: all $(SUBDIRS)

PS: Ваш вариант у меня работает на Linux.


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


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(amw @ Apr 2 2008, 11:34) *
А если так:
так работает.
теперь пытаюсь понять, как аналогично добавить цель clean.
Но хотелось победить исходный - слишком много файлов переписывать.
Цитата(amw @ Apr 2 2008, 11:34) *
PS: Ваш вариант у меня работает на Linux.
И у меня работает на двух машинах с виндой. А на двух не работает. Пока только пришло в голову, что на машинах, где не работает, процы AMD, а где работает - Интел, но я не верю, что причина может быть в этом. Надо будет внимательне посмотреть, какие версии sh стоят на этих машинах.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Сергей Борщ   не работает рекурсивный вызов make   Mar 30 2008, 21:44
- - AHTOXA   Цитата(Сергей Борщ @ Mar 31 2008, 02:44) ...   Mar 31 2008, 03:25
|- - amw   Цитата(Сергей Борщ @ Apr 2 2008, 11:51) т...   Apr 2 2008, 09:45
|- - Сергей Борщ   Ну это слишком сложно... лишних 6 строчек вместо о...   Apr 2 2008, 12:14
|- - amw   Цитата(Сергей Борщ @ Apr 2 2008, 15:14) m...   Apr 2 2008, 13:02
||- - Сергей Борщ   Цитата(amw @ Apr 2 2008, 16:02) По моему ...   Apr 2 2008, 13:16
||- - amw   Цитата(Сергей Борщ @ Apr 2 2008, 16:16) П...   Apr 2 2008, 13:35
||- - AHTOXA   Цитата(amw @ Apr 2 2008, 19:35) В пердиду...   Apr 2 2008, 14:26
||- - Сергей Борщ   Цитата(amw @ Apr 2 2008, 16:35) В пердиду...   Apr 2 2008, 14:39
||- - amw   Цитата(Сергей Борщ @ Apr 2 2008, 17:39) П...   Apr 2 2008, 14:54
||- - Сергей Борщ   Цитата(amw @ Apr 2 2008, 17:54) Ну может ...   Apr 2 2008, 18:22
||- - ReAl   Цитата(Сергей Борщ @ Apr 2 2008, 20:22) М...   Apr 2 2008, 19:13
||- - Сергей Борщ   Цитата(ReAl @ Apr 2 2008, 22:13) Короче, ...   Apr 2 2008, 19:23
||- - ReAl   Цитата(Сергей Борщ @ Apr 2 2008, 21:23) К...   Apr 2 2008, 19:53
||- - Сергей Борщ   Цитата(ReAl @ Apr 2 2008, 22:53) Код...   Apr 2 2008, 20:14
|- - Сергей Борщ   Цитата(Сергей Борщ @ Apr 2 2008, 15:14) В...   Oct 2 2008, 19:26
- - AHTOXA   Проверил со сборкой от klen-а, работает нормально:...   Apr 2 2008, 19:25


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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 13:42
Рейтинг@Mail.ru


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