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