Могу ли я выполнить команду в подпапке в make-файле - PullRequest
2 голосов
/ 27 февраля 2012

Папки моего проекта выглядят так

Makefile
/src
  /flash
    build.xml
  /blabla
    ...

Я написал такой Makefile

flash: src/flash/bin-debug/App.swf

src/flash/bin-debug/App.swf:
    cd src/flash
    ant

Когда я выполняю make flash, я получаю следующее сообщение:

cd src/flash/
ant
Buildfile: build.xml does not exist!
Build failed
make: *** [src/flash/bin-debug/App.swf] Error 1

Как я могу выполнить ant в src/flash

Ответы [ 2 ]

4 голосов
/ 27 февраля 2012

make создает новую подоболочку для каждой строки . Попробуйте:

src/flash/bin-debug/App.swf:
    cd src/flash; ant

В противном случае две команды выполняются в двух отдельных подоболочках. Эффект cd теряется, когда заканчивается первая подоболочка.

1 голос
/ 27 февраля 2012

Как объяснил aix, вы должны написать cd src/flash; ant в одну строку.

Поскольку вы не указали никаких зависимостей для цели App.swf, make не может пересобрать при их изменении. Вы можете добавить их. Проблема в том, что вы не хотите дублировать работу, которую вы уже делаете с муравьем.

С GNU Make решение состоит в использовании фальшивой цели . Это тип цели, который не интерпретируется как имя файла и чьи команды будут выполняться каждый раз, когда цель создается.

Это выглядит примерно так:

.PHONY: flash

flash:
    cd src/flash; ant

Повторное нажатие make flash будет вызывать муравей каждый раз.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...