I use qmake to generate the Makefile, and that works well. However, sometimes I want to add more stuff to the generated Makefile without having to edit the generated Makefile.
Let's say that we beside the source code have a Doxygen directory, and there I need to run some doxygen commands to generate the documentation. So it would be nice to have this as a target in the main Makefile. But as default qmake do not understand this type of extra stuff.
So can I add something to tell qmake to include a secondary Makefile in the "doxygen" dir, or maybe add "extra targets" directly in the qmake config?
Maybe something like:
I am working this same issue and so far I have had limited success using the QMAKE_EXTRA_TARGETS variable to build the docs target like so:
docs.depends = $(SOURCES)
docs.commands = (cat Doxyfile; echo "INPUT = $?") | doxygen -
QMAKE_EXTRA_TARGETS += docs
where Doxyfile has the basic doxygen config settings minus the INPUT symbol which I am appending via 'echo' to include only the unsatisfied Makefile dependencies in $(SOURCES).
This approach seems to work in that it only recreates documentation for source files that have changed which is good but I have encountered another problem in that my qmake project file is built with the debug_and_release CONFIG option so that it generates Makefile, Makefile.Debug, and Makefile.Release but SOURCES are only defined in the debug and release Makefiles forcing me to explicitly do a make -f Makefile.Debug docs
instead of the more simple and intuitive make docs
to build the docs.
Anybody ever tackled the problem from this QMAKE_EXTRA_TARGETS perspective before?
This is an old question, but I'll add an answer anyway.
While there seems to be no general support for custom rules in qmake, there is a simple way to do it, assuming GNU make. Just create a file called makefile (all lower case):
include Makefile
re: clean
$(MAKE) all
where the last two lines are my custom rule.
GNU make will use makefile, not Makefile, if both exist.
BTW, the re rule solves the problem with "make -j8 clean all". This command will start doing all before it has finished doing clean. The re rules guarantees sequentiality.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With