2010-08-30 17 views
19

Powinienem skompilować program napisany w C poprzez Makefile. Powinienem wstawić do Makefile, niektóre opcje, na przykład: -O2, -march=i686. Jak mogę wstawić tę opcję do pliku Makefile bez zapisywania w nim?Dodaj opcję kompilatora bez edycji Makefile

+0

Czy możemy już zobaczyć, co masz w swojej Makefile? – Starkey

+0

Musi to być generyczny plik Makefile – Gnufabio

+1

http://stackoverflow.com/questions/1250608/passing-a-gcc-flag-through-makefile –

Odpowiedz

19

Powinieneś użyć makra takiego jak CFLAGS. Sprawdź GNU GCC documentation.

Coś jak to powinno działać:

CFLAGS := $(CFLAGS) -O2 -march=i686 

Lub, jeśli wolisz, aby nie modyfikować stosowanie makefile:

make CFLAGS='-O2 -march=i686' 

Inne opcje będą zbierane automatycznie chociaż. Zobacz overriding variables.

+6

Należy pamiętać, że CFLAGS mogą być tworzone z złożonych pod-makr. Lepszym wyjściem może być nadpisanie jednego z pod-makr. Jeśli nie ma sprzecznej opcji w CFLAGS, często używam '' make CC = "gcc -O2 -march = i686" '', aby osiągnąć pożądany rezultat. –

+0

Gdzie pracuję, używamy dedykowanych zdefiniowanych przez użytkownika makr dla takich rzeczy - ADDED_CFLAGS, ADDED_ASMFLAGS, ADDED_EXEFLAGS, .... – Sparky

+0

W pliku make są czasami zmienne, które umożliwiają dodawanie dodatkowych flag bez nadpisywania czegokolwiek: na przykład 'XCFLAGS',' XLIBS'. Wystarczy spojrzeć na plik Makefile. –