Makefile с несколькими целями

Надеюсь, это очень простой вопрос. У меня есть правило шаблона make-файла, которое выглядит следующим образом:

%.so : %.f %.pyf
    f2py -c -L${LAPACK_DIR} ${GRASPLIBS} -m $* $^ ${SOURCES} --opt='-02' --f77flags='-fcray-pointer' >> silent.txt

Я хочу, чтобы make-файл собирал несколько файлов .so, поэтому я попытался заставить его создать два файла (radgrd_py.so и lodiso_py.so), выполнив это:

radgrd_py.so lodiso_py.so:

%.so : %.f %.pyf
f2py -c -L${LAPACK_DIR} ${GRASPLIBS} -m $* $^ ${SOURCES} --opt='-02' --f77flags='-fcray-pointer' >> silent.txt

и затем попробовал это:

radgrd_py.so:

lodiso_py.so:

%.so : %.f %.pyf
f2py -c -L${LAPACK_DIR} ${GRASPLIBS} -m $* $^ ${SOURCES} --opt='-02' --f77flags='-fcray-pointer' >> silent.txt

Но в каждом случае он создает только первую цель, которую я указал. Если я запускаю 'make radgrd_py.so', он работает нормально, я просто не уверен, как указать список файлов, которые нужно собрать, чтобы я мог просто запустить 'make'.

6
задан Kazza789 19 August 2010 в 07:24
поделиться

2 ответа

Обычный трюк - добавить «фиктивную» цель в качестве первой это зависит от всех целей, которые вы хотите построить при запуске простой make :

all: radgrd_py.so lodiso_py.so

Это соглашение называется «все» или «по умолчанию». Для большей корректности сообщите make , что это не настоящий файл, добавив эту строку в свой Makefile :

.PHONY: all
13
ответ дан 8 December 2019 в 13:43
поделиться

Лучше всего добавить:

.PHONY: all
.DEFAULT: all
all: radgrd_py.so lodiso_py.so

Пояснения:

make использует первую цель, появляющуюся, когда не указано .DEFAULT .

.PHONY сообщает make , что цели (на самом деле список, разделенный запятыми) не создают никаких файлов или папок.

all: как предложено schot

4
ответ дан 8 December 2019 в 13:43
поделиться
Другие вопросы по тегам:

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