Tengo un archivo MAKE que crea y luego llama a otro archivo MAKE. Como este archivo make llama a más makefiles que hacen el trabajo, realmente no cambia. Por lo tanto, sigue pensando que el proyecto está construido y actualizado.Cómo fuerza un archivo MAKE a reconstruir un objetivo
dnetdev11 ~ # make
make: `release' is up to date.
¿Cómo fuerzo el archivo MAKE para reconstruir el objetivo?
clean = $(MAKE) -f ~/xxx/xxx_compile.workspace.mak clean
build = svn up ~/xxx \
$(clean) \
~/cbp2mak/cbp2mak -C ~/xxx ~/xxx/xxx_compile.workspace \
$(MAKE) -f ~/xxx/xxx_compile.workspace.mak $(1) \
release:
$(build)
debug:
$(build DEBUG=1)
clean:
$(clean)
install:
cp ~/xxx/source/xxx_utility/release/xxx_util /usr/local/bin
cp ~/xxx/source/xxx_utility/release/xxxcore.so /usr/local/lib
Nota: Los nombres a fin de proteger a los inocentes
Edición: Versión final fija:
clean = $(MAKE) -f xxx_compile.workspace.mak clean;
build = svn up; \
$(clean) \
./cbp2mak/cbp2mak -C . xxx_compile.workspace; \
$(MAKE) -f xxx_compile.workspace.mak $(1); \
.PHONY: release debug clean install
release:
$(call build,)
debug:
$(call build,DEBUG=1)
clean:
$(clean)
install:
cp ./source/xxx_utillity/release/xxx_util /usr/bin
cp ./dlls/Release/xxxcore.so /usr/lib
Esta respuesta, si bien es "aceptada" y altamente "votada" es realmente fuera de lugar. Primero, dice "declarar que los objetivos son falsos", pero luego dice "el objetivo falso no es realmente el nombre de un archivo".Bueno, si su objetivo es un archivo, eso es una contradicción en la respuesta. En segundo lugar, dice que "el objetivo falso no debería ser un requisito previo de un real" - bueno, ¿y si es? La pregunta original, no especificó si lo es o no. La respuesta correcta es _no_ declarar que _sus_ objetivos son falsos, sino declarar un objetivo falso adicional y, a continuación, depender de los objetivos que desee reconstruir. –