Sto ottenendo risultati inaspettati chiamando un makefile da un altro. Ho due makefile, uno chiamato /path/to/project/makefile
e uno chiamato /path/to/project/gtest-1.4.0/make/Makefile
. Sto tentando di far chiamare il primo al secondo. In / path / to / project / makefile, ho
dev: $(OBJ_FILES)
$(CPPC) $(LIBS) $(FLAGS_DEV) $(OBJ_FILES) -o $(BIN_DIR)/$(PROJECT)
$(MAKE) -f ./gtest-1.4.0/make/Makefile
clean:
rm -f ./*~ ./gmon.out ./core $(SRC_DIR)/*~ $(OBJ_DIR)/*.o
rm -f ../svn-commit.tmp~
rm -f $(BIN_DIR)/$(PROJECT)
make -f gtest-1.4.0/make/Makefile clean
E in /path/to/project/gtest-1.4.0/make/Makefile
ho
all: $(TESTS)
clean:
rm -f $(TESTS) gtest.a gtest_main.a *.o
Emettere quanto segue:
cd /path/to/project
make
Uscite:
make -f ./gtest-1.4.0/make/Makefile
make[1]: Entering directory `/path/to/project'
make[1]: Nothing to be done for `all'.
make[1]: Leaving directory `/path/to/project'
Tuttavia, quando emetto questi comandi:
cd /path/to/project
make clean
Vedo:
make -f gtest-1.4.0/make/Makefile clean
make[1]: Entering directory `/path/to/project'
rm -f gtest.a gtest_main.a *.o
make[1]: Leaving directory `/path/to/project'
Non capisco: in entrambi i casi, /path/to/project/makefile
mi dice che sta entrando nella directory di lavoro corrente. Nel primo caso, non pensa di avere del lavoro da fare (quando lo fa) e nel secondo caso è in grado di trovare la direttiva appropriata (quando l'output mi dice che sta cercando nella directory sbagliata) eppure prova per eseguire il rm
comando /path/to/project
, invece di /path/to/makefile/gtest-1.4.0/make/
.
Mi manca qualcosa di fondamentale per chiamare i makefile l'uno dall'altro? Ho commesso un grave errore concettuale o ho incontrato una trappola comune? Come posso modificare efficacemente le directory e chiamare un secondo makefile dall'interno del primo? La mia comprensione era quella semplice chiamatamake -f <name>
sarebbe stata sufficiente.
Questo è make / gmake 3.81 in bash.
make -f gtest-1.4.0/make/Makefile clean
dirlo tu$(MAKE) -C gtest-1.4.0/make clean
. Perché non hai definito obiettivi fasulli?