Make-файл может иметь каталог как цель?

Я пытаюсь сказать, что "загрузка репозитория мерзавца будет только работать, если каталог, yank/, будет существовать. Если каталог, yank/, не существует, затем делают его"

yank/gist.el/gist.el : yank
    cd yank ; git clone http://github.com/defunkt/gist.el.git 

yank:
    mkdir yank

Я использую makepp - http://makepp.sf.net и получаю ошибку:

[metaperl@andLinux ~/edan/pkg/gist.el] makepp
makepp: Loading makefile `/home/metaperl/edan/pkg/gist.el/Makeppfile'
makepp: Entering directory `/home/metaperl/edan/pkg/gist.el'
mkdir yank
mkdir: cannot create directory `yank': File exists
makepp: error: Failed to build target `/home/metaperl/edan/pkg/gist.el/yank' [1]
makepp: 0 files updated, 0 phony targets built and 1 target failed
[metaperl@andLinux ~/edan/pkg/gist.el] 

Но почему это попыталось бы сделать каталог рывка, если это существует? "Источник" уже имеет ben созданный...

17
задан P Shved 18 July 2010 в 12:37
поделиться

2 ответа

Да , Makefile может иметь каталог в качестве целевого.

Ваша проблема может заключаться в том, что cd не выполняет то, что вы хотите: он выполняет cd , а git clone выполняется в исходном каталоге. (тот, откуда вы cd , , а не тот, на котором вы cd ). Это потому, что для каждой команды в Makefile создается дополнительная оболочка. Обходной путь - запустить cd и клонировать как одну команду с && оболочки.

Это должно работать:

bla/f: dir
    cd dir && touch f

dir:
    mkdir dir
22
ответ дан 30 November 2019 в 11:59
поделиться

Ваш makefile должен сделать то, что вы ожидаете. Поскольку yank не имеет зависимости, он не будет переделан, если он существует. Так что это похоже на ошибку в makepp. Вы можете подтвердить это, попробовав ваш makefile с традиционной реализацией make.

1
ответ дан 30 November 2019 в 11:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: