In Git, ho un ramo master (release) e un ramo dev (sviluppo) per un progetto C .
Nel ramo principale, voglio gcc solo per passare il flag del compilatore -Os (ottimizzazione per la velocità) e non -ftest-coverage -fprofile-arcs (quando compilato, viene creato un file .gcno , quando eseguito, una% viene creato il file.gcda e quando viene creato gcov executable , viene creato un file .gcov .
Nel ramo di rilascio, voglio solo che il compilatore passi il flag -Os .
Posso aggiungere Makefile a .gitignore per 1 ramo, ma dovrei controllare manualmente ogni volta se Makefile è stato modificato dopo ogni push sull'altro ramo.
Posso anche non fare nulla e ricevere una notifica di una modifica in Makefile durante l'unione, ma avrei bisogno di unire manualmente il file (mantenere una riga di CFLAG+=... e scartare l'altro), ma questo è un errore- prona.
Come posso mantenere due versioni separate di Makefile su rami diversi con requisiti diversi?
Makefile
BASE=notepad
# NEEDED FOR BOTH RELEASE AND TESTING
CFLAGS=-Wall
# ONLY NEEDED IF RELEASE
CFLAGS+=-Os
# ONLY NEEDED IF TESTING COVERAGE AND PROFILING
CFLAGS+=-ftest-coverage -fprofile-arcs
all: $(BASE).exe
$(BASE).exe: $(BASE).o
$(BASE).o: $(BASE).c
gcc $(CFLAGS) -c $(BASE).c
clean:
rm -f $(BASE).o $(BASE).exe # ALWAYS NEEDED
rm -f *.gcda *.gcno *.gcov # ONLY NEEDED IF -ftest-coverage -fprofile-arcs