В Makefiles, как проверить опцию --with-ld в gcc?
Мы пытаемся разработать максимально переносимый Make-файл...
ни uname
ни uname -v
является окончательным в одном наборе случаев...
which ld
также бесполезно, так как оба линкера присутствуют...
Я полагаю, мы могли бы просто проанализировать вывод gcc -v для '--with-ld=/usr/bin/ld', а затем протестировать функции / версию этого компоновщика. Но лучший ли способ сделать это?
Что такое "лучшие практики" здесь? Можно ли более аккуратно запросить gcc - из Makefile - для его параметров компоновщика?
2 ответа
Первое, что приходит мне в голову (протестировано с GNU make и clearmake):
# redirect gcc -v to stdout && count the number of occurrences
GCC_WITH_LD := $(shell gcc -v 2>&1 | grep -c "\--with-ld")
ifeq ($(GCC_WITH_LD),0)
$(shell echo --with-ld NOT FOUND 1>&2) # print to stderr
# exit using error directive?
else
$(shell echo --with-ld FOUND 1>&2) # print to stderr
endif
mytarget:
@echo myjobs
Вам нужен вариант -print-prog-name:
andy@Andrews-Mac-Pro ~ % gcc -print-prog-name=ld
/Library/Developer/CommandLineTools/usr/bin/ld
Затем в Makefile вы можете установить LD с помощью:
LD := $(shell gcc -print-prog-name=ld)
Это также работает в Solaris.