Recibo algunos resultados inesperados llamando a un archivo MAKE desde otro. Tengo dos archivos makefiles, uno llamado /path/to/project/makefile
y otro llamado /path/to/project/gtest-1.4.0/make/Makefile
. Estoy intentando que el primero llame al último. En/ruta/a/proyecto/makefile, tengoCómo llamar a Makefile desde otro Makefile?
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
Y en /path/to/project/gtest-1.4.0/make/Makefile
tengo
all: $(TESTS)
clean:
rm -f $(TESTS) gtest.a gtest_main.a *.o
emitiendo el siguiente:
cd /path/to/project
make
Salidas:
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'
Sin embargo, cuando publico estos Comandos:
cd /path/to/project
make clean
veo:
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'
no entiendo: En ambos casos, /path/to/project/makefile
me está diciendo que está entrando en el directorio de trabajo actual. En el primer caso, no cree que tenga trabajo que hacer (cuando lo hace) y en el segundo caso, es capaz de encontrar la directiva adecuada (cuando la salida me dice que está buscando en el directorio incorrecto) pero intenta ejecutar el comando rm
en /path/to/project
, en lugar de /path/to/makefile/gtest-1.4.0/make/
.
¿Me falta algo fundamental para llamar a los archivos MAKE el uno del otro? ¿He cometido un error conceptual atroz o alcancé un error común? ¿Cómo cambio efectivamente los directorios y llamo a un segundo archivo MAKE desde dentro del primero? Mi entendimiento fue que simplemente llamar al make -f <name>
sería suficiente.
Esto es make/gmake 3.81 en bash.
Creo que, en lugar de 'make -f GTEST-1.4.0/marca/Makefile clean' es mejor decir '$ (MAKE) -C gtest-1.4.0/make clean'. ¿Por qué no ha definido objetivos falsos? –
http://stackoverflow.com/questions/3494999/subdirectories-and-makefiles –