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ć?

 38
Author: Paul R, 2012-08-21

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

 50
Author: perreal,
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ć.

 9
Author: Swair,
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
 6
Author: Leonid Volnitsky,
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


 2
Author: Elpis,
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