Stanislav Maslovski -> debian-russian@lists.debian.org @ Thu, 2 Oct 2008 09:32:01 +0400:
>> ДАННАЯ задача может решаться так: >> >> A/Makefile: >> >> all: ../a.tgz >> >> ../a.tgz: $(DIR_SRC)/c $(DIR_SRC)/b >> make -C ../B >> tar -czvf $@ $^ >> >> и ничего страшного что make -C ../B вызывается постоянно, поскольку он >> ничего не делает. SM> DIR_SRC="../B", вероятно? SM> Не будет работать. Если сделать гипотетический make clean в B/ (rm SM> -f b c) то вызов make all в A/ приведет совсем не к тому, что SM> ожидалось. Так как явных правил сборки с.c -> с и b.c -> b в SM> A/Makefile нет, гнутый make попытается применить неявное правило (а SM> другие, наверно, просто с ошибкой "No rule to make target" SM> выпадут). Что в общем случае приведет к неуспеху. Он же специально лог привел. И правило выбрал явно недефолтное. Работает. И даже, в общем, понятно, почему, хотя место действительно нетривиальное. Не будет работать, если b.c - не исходник, а промежуточный результат. Т.е. если дополнить задание утверждением "b.c генерируется из b.y", то да, отвалится. Но как лечить, тоже понятно. include.mk кладется в B, и правила сборки собственно файлов пишутся в него. С учетом DIR_SRC. -- Artem Chuprina RFC2822: <ran{}ran.pp.ru> Jabber: [EMAIL PROTECTED] Пришел в гости математик, почитать новую рукопись. Вычитал из нее трех героев напрочь, и ушел. Gimli on #arda -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]