[GNC-dev] CMake build system for gnucash-docs
Geert Janssens
geert.gnucash at kobaltwit.be
Mon Sep 2 13:29:00 EDT 2019
Over the weekend I spent a few cycles to port the gnucash-docs autotools build
system to cmake.
Most of it is done and can be played with by checking out the current maint
branch on gnucash-docs.
The main missing elements are:
- generating the Windows specific chm files
- uninstall rules
- omf/scrollkeeper/rarian support
The last one is easy: I don't intend to add this. It was there because old
versions of yelp (<2.23) required it. No platform we care about still uses
that old yelp version so omf is obsolete.
The other two will follow hopefully somewhere next week.
Other than that there are a few important changes between the autotools system
and the cmake system. The most important one is that autotools provided a
fully self-contained Makefile in each document directory. Cmake on the other
hand works with a single top-level makefile (or ninja ruleset if you prefer).
That is, with autotools you could
cd guide/C
make html
And that would build you the html version of the English guide
This is not possible in cmake. However I have tried to provide equivalent
targets instead wherever possible. So to achieve the above you can instead do
make C-gnucash-guide-html
The targets are always named
<language>-<document>-<type>
So similarly you will find
de-gnucash-help-pdf
pt-gnucash-help-epub
ja-gnucash-guide-mobi
and so on.
Entering
make help
will provide a list of available targets to choose from.
This gets even more complicated when attempting to install. There is only one
global install target (inherit to cmake). However one can restrict what to
install by setting environment variable CMAKE_INSTALL_COMPONENT to one of the
targets mentioned above (at least one for which install is implemented/makes
sense). So for example
CMAKE_INSTALL_COMPONENT=C-gnucash-guide-html make install
That will only install the English guide in html format. Currently this will
work for xml and html targets. The pdf, epub and mobi targets don't have
install rules. And I'm even considering dropping them for html. It doesn't
make much sense to have an install rule for html as it's not something a
packager will want to install on their system. They should use the xml target
instead.
The last tidbit I'm still considering for improvement is to replicate the
install paths in the build directory, much like we do for the gnucash build
system as well. That is, instead of storing the pdf file in
<builddir>/guide/C
store it in
<builddir>/share/gnucash-docs/C
There are a few additional notes in https://github.com/Gnucash/gnucash-docs/
blob/maint/CMakeNotes.txt
Feedback is welcome.
Regards,
Geert
More information about the gnucash-devel
mailing list