Makefile с помощью coqtop -R coqdir - PullRequest
1 голос
/ 20 марта 2012

У меня есть make-файл:

Добавьте команду: coqtop -R coqdir Мне нужно указать физический путь на моем компьютере, но этот каталог зависит от каталога пользователя.(~/color/trunk/color/devel/gwen Devel and ~/color/trunk/color CoLoR).

Есть ли другой способ вызова и объединения программ без указания физического пути?

tmp/rainbow.native: tmp
coqtop -q -R ~/color/trunk/color/devel/gwen Devel -R ~/color/trunk/color CoLoR 
-batch -load-vernac-source extraction.v && 
(cd tmp && ocamlbuild -j 3 rainbow.native)

tmp:
    mkdir -p $@

Ответы [ 2 ]

1 голос
/ 20 марта 2012

Для этого и используется переменная окружения $PATH: вы добавляете в нее каталоги, в которых находятся программы, которые вы хотите запустить.По сути, make, или ваш make-файл, не может выполнить поиск программы coqtop по всему компьютеру, поэтому человек, вызывающий make-файл, должен знать, где он находится, и сообщить make-файлу.

Обычно это делаетсячеловеком, который знает, где находится программа, добавив каталог, содержащий программу, в переменную окружения $PATH, прежде чем они вызовут make.

Если вы не хотите идти по этому пути, тогда онинеобходимо установить переменную в командной строке make, которая указывает на местоположение: make DEVEL=$HOME/color/trunk/color/devel или подобное.Или они могут установить путь в переменной среды (make всегда импортирует все переменные среды как макросы make-файла).

В качестве другого варианта вы можете использовать (при условии, что вы используете GNU make или make, который поддерживаетit) -include local.mk затем пусть они создадут файл local.mk в своем каталоге, который устанавливает эту переменную перед запуском make;таким образом, они могут один раз создать этот файл с правильным путем и покончить с ним.

Это ваши единственные варианты, если только вы не можете каким-то образом определить путь, по которому вы можете, например, алгоритмическитекущий каталог или каталог, содержащий make-файл (который, по-видимому, отсутствует).

0 голосов
/ 31 марта 2012

С помощью coq v8.4 вы можете установить переменную среды COQPATH для пути, разделенного двоеточиями (возможно, точка с запятой, разделенного на окнах), и coq будет обрабатывать эти каталоги, как если бы он был передан -R <directory> ''. Другими словами, он будет рекурсивно добавлять все файлы с нулевым префиксом.

Также по умолчанию coq v8.4 будет автоматически обрабатывать ~/.local/share/coq (технически ${XDG_DATA_HOME}/coq) таким же образом. Таким образом, вы можете просто связать соответствующие каталоги с соответствующими именами (т.е. Devel и CoLoR).

...