wiele plików Makefile w jednym katalogu
Mam plik makefile w moim katalogu, który buduje skrypty z ustawionymi pewnymi zmiennymi środowiskowymi. Co zrobić, jeśli chcę utworzyć inny plik makefile w tym samym katalogu z różnymi zmiennymi środowiskowymi ustawionymi? Jak nazwać dwa pliki make? Czy makefile.1
i makefile.2
działają? Jak mam ich nazywać?
4 answers
Możesz nadać sensowne nazwy plikom takim jak makefile.win i makefile.nix i używaj ich:
make -f makefile.win
make -f makefile.nix
Lub mieć plik Makefile zawierający:
win:
make -f makefile.win
nix:
make -f makefile.nix
I używać make win
lub make nix
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-08-21 15:07:58
W rzeczywistości możesz mieć dwa zestawy zmiennych środowiskowych w tym samym pliku make. na przykład
COMPILER = gcc
CCFLAGS1 = -g
CCFLAGS2 = -Wall
a: main.c
${COMPILER} ${CCFLAGS1} main.c
b: test.c
${COMPILER} ${CCFLAGS2} test.c
Wtedy możesz po prostu powiedzieć make a
lub make b
. Zależy, czego chcesz.
Możliwe jest również wywołanie przez flagę-f pliku makefile, który chcesz wywołać.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-08-21 15:12:29
Możesz nazwać makefile, jak chcesz. Zwykle nazywam to tak somename.mk
. Aby użyć go później musisz powiedzieć make jaki makefile chcesz. Użyj w tym celu opcji -f
:
make -f somename.mk
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-08-21 15:10:52
Możesz zrobić coś takiego zamiast używać wielu plików Makefile do tego samego celu. Możesz przekazać środowisko lub ustawić flagę do tego samego pliku makefile. Dla np:
ifeq ($(ENV),ENV1)
ENV_VAR = THIS
else
ENV_VAR = THAT
endif
default : test
.PHONY : test
test:
@echo $(ENV_VAR)
Następnie możesz po prostu uruchomić polecenie make z argumentami
make ENV=ENV1
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-11-27 06:52:43