David Williams wrote:
Interesting, so is this the same process as is used by Nokia to produce the Qt documentation? I always assumed they has some custom tool to handle Qt specific things such as signals/slots. But they are really using Doxygen as a backend?
Well, this is really a two stage process. The first is some tool (Doxygen in our case) which scans the source code and creates a bunch of HTML files. The second is a tool which takes all those HTML files (regardless of where they came from) and bundles them up to be displayed in Qt Assistant.
The second step is the same as what Nokia do (this qcollectiongenerator tool is the result of them open-sourcing one of their internal tools I believe). The first step however, is probably different. They have some sort of secret internal Doxygen-like tool (in fact Doxygen was created as a reverse engineered clone of this tool -- see answer 19 at
Doxygen's FAQ) which they use to create the HTML API docs. It is this secret tool which handles the signals and slots.
In addition to the auto-generated API docs, Nokia also create a lot of other HTML files (either by hand or with some other tool) for things like tutorials which they then bundle together into Assistant.
David Williams wrote:
milliams wrote:
If either qcollectiongenerator or Doxygen are not available, the doc build target will simply not be available. I am planning on adding the ability to fall back to plain Doxygen docs if qcollectiongenerator is not found.
Unfortunalty this is what happens to me

I just reverted back a few revisions, and it seems that I do get the 'doc' target for revision 1112 but not 1113. Of course, I can try to investigate myself why this happens.
But yes, I like it. Though I do think it would be good to fall back on just Doxygen if necessary, because Qt is quite heavy whereas Doxygen is quite standard for this.
Ok, I've just checked in some code (
r1118) which provides this fall-back. Doxygen docs will always be created but if qcollectiongenerator is available then they will also be bundled up into a Qt Help Collection.
David Williams wrote:
I guess we are also permitted to to ship a copy of Qt Assistant with the PolyVox SDK, if we wanted to?
Yes, I believe we can. It's LGPL3 but that doesn't affect the licence of PolyVox itself. The way it would work is that in the SDK we would include the
assistant.exe executable, the required DLLs and plugins (only a few),
polyvox.qch and
polyvox.qhc. To make it run we should probably include a Windows shortcut file (or whatever they are) to run the assistant binary with the correct arguments.
David Williams wrote:
milliams wrote:
<snip> ...some stuff about Sphinx
It looks good, and I think a tool like this is appropriate for the end user documentation. Steve Streeting also had an interesting blog post a few months ago about the documentation tool chain for Ogre:
http://www.stevestreeting.com/2010/03/0 ... #more-2592It's a bit heavy for what we want but the asciidoc (
http://www.methods.co.nz/asciidoc/) tool looks very similar to Sphinx. I have no preference between them at all as I haven't done any research.
Well I like Sphinx because it provides all the outputs we need including Qt Help. Plus the syntax makes it possible to read the source files as if they were pretty much plain text (though I guess asciidoc is like that too). From what I can tell Sphinx is a bit more lightweight and it's working. If I have time, I'll play around with creating a simple theme for it.
David Williams wrote:
There is also the option of doing the end user documentation using Doxygen? I know you already added some basic stuff here like the skeleton of a tutorial. How does this then integrate with Qt Assistant? How do Nokia handle their end user documentation (tutorials, examples, etc)?
It would probably be possible to create a the manual in Doxygen but it's not really what it's designed for. It's quite common (e.g. OGRE do it) to use a different tool for
API docs and the
manual. Each tool has it's own strengths and so it makes sense to work with those. It should even be possible to get Sphinx to link to the Doxygen docs automatically etc. (I'd have to write this myself but it's Python so wouldn't be too hard).
The way Nokia do it (at least this is what I guess they do) is to use their Doxygen-like tool to create just the API docs and create all the rest of the pages using some sort of tool which pumps out HTML files. The two tools will have some sort of weak linking (i.e. the manual pages can link to the class definitions easily) but most of the cohesiveness comes from consistent theming. They then stick them all in the same directory. Of course it is possible they use one tool for doing all of that but it's almost certainly not as nice a tool as Sphinx (or whatever).
David Williams wrote:
milliams wrote:
Just putting down my thoughts etc. on what I've been working on the last few evenings.
Yep, that's great

Unfortunatly it's not so good from a timing point of view as I have Celine coming for the summer and am unlikely to have much time for PolyVox/Thermite. But I'll work on it when I can

That's understandable. I'll keep poking away at these things, probably mostly on the documentation but I'm also planning on cleaning up the PolyVox SDK creation to ensure that it's all working as it should (especially with the new docs).