Ich habe ein Makefile, das ein anderes Makefile erstellt und dann aufruft. Da dieses Makefile mehr Makefiles aufruft, die die Arbeit erledigen, ändert es sich nicht wirklich. Daher wird immer daran gedacht, dass das Projekt erstellt und auf dem neuesten Stand ist.
dnetdev11 ~ # make
make: `release' is up to date.
Wie zwinge ich das Makefile, das Ziel neu zu erstellen?
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
Hinweis: Namen wurden entfernt, um die Unschuldigen zu schützen
Edit: Final Fixed version:
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
.PHONY
als wäre es nicht Ihr einziges Problem, und Sie sollten die Lösung nicht wirklich in die Frage einarbeiten oder zumindest nicht mehr.)