|
|
Comments and Discussions
|
|
 |

|
Hi,
I tried all steps to configure my vc++ tool menu and everything works fine!
The problem verifies when I try to process a workspace that is stored under C:\Documents and Settings\etc.....
And i observe this both to generate the document (doxygen.exe) and to view it (iexplore.exe)...
For processing phase i get the message
The error message is:
Error: configuration file C:\Documents not found!
Tool returned code: 1
For the exploring phase i get an error from Explorer.
It seems it's not able to understand C:\Documents and Settings.
It tries to look in C:\Documents%20and%20Settings\....
What's matter??
thanks
giusi
|
|
|
|

|
I'm by no means a professional programmer, but the project I'm working at the moment has grown somewhat fat, so I installed Doxygen and gave it a try. And it works really good! It's a kick to see all those classes nicely together, with all the colours and stuff...
|
|
|
|
|

|
Hi,
I just have adapted your tutorial to VS 2005 beta 2.
Instead of $(WkspDir) use $(ProjectDir) when you construct the DoxyGen command in the External Tools menu. This is because you can say that all projects of a solution shall be created in their own subfolder and those folders are in parallel to the solution file (.sln).
In the View DoxyDoc command I adapted the Arguments line to
$(ProjectDir)doxydoc/index.html since $(ProjectDir) contains a backslash at the end and iexplore.exe cannot find a document called $(ProjectDir)\doxydoc\index.html
|
|
|
|

|
Hi, I tried Doxygen after reading this article and found it amazing. I got all the things right except the source code of the files. It just shows a blank box on the page. In the source of the html page, there is a tag <pre class="fragment">. If I make it <pre class="">, it shows the page correctly. Can somebody please explain what this tag is and is there any other "decent" way than going to the source of every page and modifying this tag. Regards, Pravin
|
|
|
|

|
Hallo,
i hope anone can help me with doxygen. I want to crate a documantation of several c programms with doxygen and i want to have a first big general programm description created by doxygen. The problem is that every kind of comment must be related to a function, class, variable and so on. And I don't want to add a dummy function or something like this.
Thanks for help?
Greets
Roadrunner
|
|
|
|

|
Did someone generate CHM from doxygen docs?
This feature would be very usefull.
Contents, Searching, Keyword index and MSDN integration.
That would be really cool and convinient.
Best regards
Nick
|
|
|
|

|
I got the Doxygen tool setup fine and I can view my documentation and I'm ahppy with that. But when I tried to setup the tool for viewing the HTML, IE can't find it. The URL it is using looks correct but it claims it can't find anything: "http://%22c/Directory/Subdir/html/index.html".
I'm using .Net 2003 if that helps.
|
|
|
|

|
I have used Doc++ for a while but not very happy with it. I find Doxygen is much better and easier to configure the output. Since I am moving to a new job that they do not use auto doc tools, I think I will recommend Doxygen to my colleagues.
|
|
|
|

|
I have generated HTML files using Doxygen and compiled it using the HTML help workshop to create .chm file. It all worked well ...but when I try to locate a particular function name from the index list , it always ask to select the subentry to locate the function.
But the subentry is the name of the module(file) in which the function is written.And when I click on this it always goes to the begining of the file , not to the function.
How can I get to the function when I click on the function name?
Please help.
With Warm Regards,
Ancy
|
|
|
|

|
It may not be as sophisticated as DOxygen, but Doc++ is a lot more simpler and easier to use.
|
|
|
|
|

|
I am still astonished about the mass of positive response to this article - Thank you all for your feedback (be it comments, a vote, or ust viewing it). This is enourmously encouraging.
[little self-advertisement]
It took me a while to write a new CP article - but at least, it uses doxygen heavily. See for yourself if you like the results.
Files and Folders / CPath[^]
It is a "fat interface" class, and the documentation could stand a little bit more of overviews, but it can give you an impression what you can do with doxygen and some patience.
we are here to help each other get through this thing, whatever it is Vonnegut jr.
sighist || Agile Programming | doxygen
|
|
|
|

|
Is there anybody who has experiance how to make documentation with doxygen for the whole workspace (VC++ 6.0) in one document?
|
|
|
|

|
Just discovered an article that provides some Design-by-Contract macros - and automatically includes their description in the doxygen documentation. Schweet!
Clickety[^]
Thanks, Antoine.
we are here to help each other get through this thing, whatever it is Vonnegut jr.
sighist || Agile Programming | doxygen
|
|
|
|
|

|
Hello,
Nice, now that you are introduced to doxygen, you may take the full
advantage of this tool inside an AddIn that is also posted in this site:
Look in: http://www.codeproject.com/macro/KingsTools.asp[^]
Any comment?
Have a nice day.
Rbid
|
|
|
|
|

|
For VC++ .Net use $(SolutionDir) instead of WkspDir ..
It is cool !
|
|
|
|

|
assuming there are both /** and /*! style in my project.
How to cofigue if I only want one style not both /** and /*!
because sometimes need to control some comment blocks to be ducumented or not.
Hardware-OS-Software
===== Bridge =======
|
|
|
|
|
|

|
Hi Peterchen
One of my colleague built a COM object using ATL 7.0. The IDL nor the .h files are documented, he instead documented (for doxygen purposes) the functions of the implemetation classes, above the function definitions. I saw some doxygen pages he produces and the documentation is correct. For instance, for the ISessionInfo.Status property, there is the code snipper:
/**
*The get Status property.
*\param pVal: Output parameter. A pointer to LONG to hold the Status.
*\return E_POINTER if pVal is NULL.
*\return S_OK otherwise.
*/
STDMETHODIMP CSessionInfo::get_Status(LONG* pVal)
{
if (pVal == NULL)
{
return E_POINTER;
}
//Some processing;
return S_OK;
}
/**
*The put Status property.
*\param newVal: Input parameter. A LONG containing the new Status.
*\return S_OK.
*/
STDMETHODIMP CSessionInfo::put_Status(LONG newVal)
{
// Some processing
return S_OK;
}
Note that the CSessionInfo class implements the ISessionInfo interface.
The corresponding Doxygen page (fragment):
HRESULT ISessionInfo::Status ( [in] LONG newVal )
The put Status property.
Parameters:
newVal: Input parameter. A LONG containing the new Status.
Returns:
S_OK.
HRESULT ISessionInfo::Status ( [out, retval] LONG * pVal )
The get Status property.
Parameters:
pVal: Output parameter. A pointer to LONG to hold the Status.
Returns:
E_POINTER if pVal is NULL.
S_OK otherwise
Now the guy is on vacation until July and I had to make changes to the interface definition, and the comments are no longer in the doxygen output and I can't make it put them back.
Any idea what is wrong?
|
|
|
|

|
Hi peterchen, A very informative and useful introduction to a new tool wich many are unaware of. B.Arivazhagan
|
|
|
|

|
Each real programmer likes playing with programing tools, but hates writing documenation. When asked for documentation, he/she (to be politically correct) takes Doxygen and prepares, according to his meaning, excelent documentation by it or similar tool.
In fact, majoriry of automatically obtainable documentation is available in the comfortable interactive form in e.g. IDE VC++ or similar system, so information contribution of a Doxygen generated documentation is minimal. Naturally, it can fullfill any bueraucrat (or boss), but its significancy for other programmer is minimal, may be with exception of alphabet indices for larger systems.
Often some human message concerning rason of some solution, mathematical description or proof of some statement, description of method, reference to literature is more valuable than megabytes of information empty formal documentation. Such information can be naturally included as special comment to source code and trasfered by Doxygen into formal documentation, but it is not true in above described cases. For this reason, when I hear "the system is well documented by Doxygen", I begin feel fear.
May be, lovers of Linux or other user infriendly systems will be satisfied by megabytes of automatically generated documentation, but I personally prefer good human generated one. Human oriented to people, machine oriented to computer.
Jiří Šoler
1) Each program has at least one error
2) When fixed, the rule 1) is still valid
It is logical nonsens, but praxis confirms it!
|
|
|
|

|
Because the DoxyWizard has no recent file list, but it works with command line parameters, it is useful to add the DoxyWizard to the tools menu too.
- Command: c:\program files\doxygen\bin\doxywiz.exe (or where you installed it)
- Arguments: "$(WkspDir)\default.doxygen" (the config file - include the quotes!)
- Initial Directory: "$(WkspDir)"
|
|
|
|

|
How do I control remote program over the network . I mean, for example, I want to move a button from that program to a new location or lock the program or what ever. Thank you very much in deep for your interest...
Phalanx
|
|
|
|
|

|
This GORGEOUS tool works perfectly under eVC++ 3.0. It was a breeze to set-up and it is a joy to use. Actually I was looking for something like this for some time now, and never expected to find such a tool offered as freeware. I'm enjoying it so much that I've stopped coding for a while just to document a mid-sized lib that I was desperate to document. This is the kind of quality stuff that makes me think how normal a programmer I am... Sigh.
|
|
|
|

|
Hi,
Your articel was very useful, and I've started using doxygen comments. Rather than a tool for documenting you code it seems to be a tool for documenting your declarations and definitions. Is it possible to get doxygen to generate something where the actual code is interleaved with cooments, eg. explaining an algorithm or choices made and why, etc. I know you could just leave it in the code, but it'd be nice to have the code prettily formatted with links etc....
A quick scan of the doxygen docs didn't reveal if it can do what I want, is there anything else around worth looking at for this?
TIA
Mark
|
|
|
|

|
we actually used cppdoc2 for automatic documentation
of mfc/c++ classes in a javadoc-style. cppdoc2 is also
easy to use with an excellent gui.
http://www.cppdoc.com
|
|
|
|

|
DoxyGen is indeed an amazing tool. The article doesn't cover even half of its capabilities and you really have to try to use it. Being a big fan of it myself I would like to thank to the author of this article for bringing more people to the community .
Before we've chosen for DoxyGen, our project manager has made a deep research on documentation tools available on the market, explained their pros and cons leaving for us making of the final decision. Most of the tools he found could have been split up into two main categories: those, that don’t require any special syntax in the comments, and those that require. Tools from the first category can be very useful in documenting of the existing code but they will never give you flexibility tools from the second category give. Besides this, syntax used in comments has already become de facto standard in documenting code, so time for studying it won't be wasted.
For those, who are not yet convinced, some extra excerpts from our experience:
- DoxyGen can generate documentation in HTML, RTF, (MS-Word), PostScript, hyperlinked PDF, compressed HTML (MSDN like .chm files), and Unix man pages.
- You can easily adopt style sheets, headers and footers for your documentation to look exactly the same as documentation in MSDN (roughly all You need to do is to copy some style definitions from MSDN's style sheets) or as other company documents.
- DoxyGen generates graphical diagrams of the class hierarchies and module dependencies. Really COOL feature!
- DoxyGen can also generate a code browser with the syntax highlighting.
- Parts of the generated documentation can be reused later for user manuals
- Newcomers get quickly involved into the project without having to dig into the code and bother someone with the questions
- That's absolutely not true that it takes ages to generate documentation. Once you've created necessary scripts for complete automatic regeneration of the documentation it takes a minute for an average project. Eventually you won't do it more often than once a month and even if you do, you can schedule it for night.
It will most probably take you some time to discover how to use DoxyGen to its fullest extent but once you've done it, you'll start writing comments similar to this one, convincing your friends to use it too
Yuriy Solodkyy
Quadrox NV
|
|
|
|

|
In the article you mention that having multiple projects in separate directories will cause problems.
I have my workspaces set up so that the workspace files are in X:\Workspaces\"OverallProjectName", and the project and source files are in X:\Projects\"SubProjectName". This works well as a lot of the projects are libraries shared by different workspaces.
Any idea how to make DOxygen work in this environment?
Thanks...
Blade[DMS]
|
|
|
|

|
I discovered Doxygen 2 weeks ago and I'm already hooked! Fantastic job!
The author forgot to mention one of Doxygen's greatest features. It can build UML diagrams and embed them into your documentation. Also, the class boxes in the UML are automatically setup as links to their documentation. Sweet!
Doxygen can display UML in 1 of 2 ways. The default setting only draws a class's immediate super and sub-classes. To display a full UML hierarchy, you have to download AT&T's Graphviz at http://www.research.att.com/sw/tools/graphviz/[^].
|
|
|
|

|
Excellent article!
Some years ago I worked on a system with its own 4GL. One of the guys in our department wanted debug access to the system internals by simply typing in a single keyword. He chose the first word to come into his head and thought no more about it. Months later, after being sent to numerous clients, the Appendix of the User Manual was found to include the following list:
Blinking
Blue
Bold
Bollocks
:-OOops!
The documentation department had used some form of automatic tool to extract the keywords from wherever they were held and neglected to review the contents. The head of the documentation department did the honourable thing and blamed everyone else. New copies of the Appendix were printed and sent out to clients under some obscure pretext.
Once word got round the company (approximately 30 seconds) the User Manual became the hottest read around - a first in itself!
If there is any moral to this tale it is that the comments must be worth reading in the first place.
People who use computers in music - Is their Bach worse than their Byte?
|
|
|
|

|
In the table above the Rational section, the "original code" link is not found. And when you follow the documentation links, the resulting pages contain links to a local harddrive.
Also the Style Sheets section has broken links for doxygen_default.css
|
|
|
|

|
I have dismissed it because it takes ages to produce a nice HTML inter-linked documentation. Or have I missed something?
I used ccDoc in the past which is much faster and used to have a nice output (but I had to spend two days fixing its bugs first...).
Eric
Back in CH... for how long?
|
|
|
|

|
Well done - a great article. I have been using doxygen for around 6 months now and have the following comments:
* Graphs. They are free! They look great! Discuss.
* Full stops - use them at the end of sentences!
* Standards. We have more than one developer using doxygen, and have the following standards:
- Use @file at the top of every file.
- Add brief comment to class header file and all other comments to the .cpp file.
- Use @param everywhere.
- Use @return where possible.
- Use @todo where possible to allow the rest of the team to see what you haven't done yet!
- Group classes using @ingroup for large projects (e.g. one group per VS6 dsp file)
e.g.
/// @file test.h
/// Interface for the CTest class.
/// @ingroup core
/// Class to do something cool.
class CCool
{
public:
/// @brief Function that does something cool.
int Cool(LPCTSTR lpsz);
};
...
/// @file test.cpp
/// Implementation of the CTest class.
/// Nice long description about how cool this function is.
/// @param lpsz The string to do something cool with.
/// @return A cool value.
/// @todo Make this even cooler.
int CCool::Cool(LPCTSTR lpsz)
{
...
}
When I am king, you will be first against the wall.
|
|
|
|

|
If you can write a VC-addin is good!
==============================================
SkinMagic SDK Library for C/C++
The better solution for write skinnable application
http://www.appspeed.com
==============================================
|
|
|
|
|

|
How about the Autobuck?
|
|
|
|

|
I'm on my third iteration of re-writing one of my applications, and this time I am going to play by the rules, I promise!
Each time through, I relize how I can become more modular and clean, and having documentation really helps! I am going to start using Doxygen today!
Thanks for motivating me! Great article!
- Nitron
"Those that say a task is impossible shouldn't interrupt the ones who are doing it." - Chinese Proverb
|
|
|
|

|
Is it just me or are some of the links in the tables broken?
The file '/useritems/doxytools.zip' doesn't exist. Please contact webmaster@codeproject.com.
|
|
|
|

|
I use the /doc switch (in C#) to generate xml file with my comments then run this through ndoc[1] to generate a chm file in the MSDN style. it's all free.
1] http://ndoc.soruceforge.com
|
|
|
|

|
I was using doxygen for a while now, but never managed the VC++6 integration part properly -
your text explained those issues very good!
Thank you!
My opinions may have changed, but not the fact that I am right.
|
|
|
|

|
We're using Doxygen as well. However, just giving Doxygen to 10 or more developers is not a solution. Doxygen still allows each developer to write comments in his own style, resulting in a non-consistent documentation. So installing Doxygen is only the first step.
The second step is to standardize on a way to write comments :
- Which tags should be mandatory (e.g. \param) ?
- Which tags are used in which situation (\return vs. \retval) ?
- Which tags have which meaning (\note, \warning) ?
- How is documentation organized in modules ?
...
So writing your own Documentation Style Guide is the second step.
The third [optional] step might be to automate documentation generation.
If each developer works on its own small application, having Doxygen per user might be a good solution.
However, if you have 10 developers in a team working together on 2 big applications, while sharing some of the code, it might be better to set up a documentation server. The documentation server could generate the documentation of all the applications at once, resulting in one help set (set of html files or 1 .chm file).
This has also the advantage that the developer of the shared code (what we call a tool-developer in our company) immediately sees which of the applications inherits from his defined classes, what the impact of a change of a class would be, and what should be specifically tested in each application if a critical, shared part of the code is changed.
A documentation server is also handy if lots of developers have laptops that are taken home overnight. Since the laptop is probably turned off during the night, automatic documentation generation will not run on it.
However, a documentation server, since it is located in the server room, will always have up-to-date documentation [of all the checked-in sources] each morning.
Enjoy life, this is not a rehearsal !!!
My Articles:
- Implementing a Subject/Observer pattern with templates
|
|
|
|

|
Heya Everyone,
Firstly, thanks for a great article! I too am an advocate of Doxygen and your article is a great reference on how to set it up and get it running painlessly.
I've recently migrated to Visual Studio.NET and am looking at the Build Comment Web Pages that you mentioned in the article. As I understand, this feature is geared toward C# code? However, I'd definitely like to use it for my C++ code...
My questions are:
* In what limited fashion does it work for C++?
* Does Everett have full support for this feature?
I tried running the tool on a c++ application I had lying around with no /// comments in it, hoping to get it to generate a class tree but no such luck - just a webpage with the project name on it.
Cheers,
Matt
PS I could always setup Doxygen to work with .NET but it'd be nice to use the inbuilt tool...
|
|
|
|

|
http://www.bbeesoft.com/
Jerome.
|
|
|
|

|
You should perhaps also mention some of the cooler features of Doxygen as well: dot graphs and the ability to create CHM's.
There's a tool mentioned somewhere on the site that allows you to integrate CHM's into the MSDN so not only can you document your projects with way impressive class hierarchy and include graphs, you can also search them along with the rest of the MSDN!
he he he. I like it in the kitchen! - Marc Clifton (on taking the heat when being flamed)
Awasu v0.4a[^]: A free RSS reader with support for Code Project.
|
|
|
|

|
I havn't heard about doxygen. I gave it a shot after going through the first parts of your article and it generated such cool html files. So far I havn't been so particular about documentation, but after knowing that such a thing exists I feel more motivated to write comments know that they i'll pay off. Thanx alot for the article
Cheerz
|
|
|
|
|
 |
|
|
General News Suggestion Question Bug Answer Joke Rant Admin
|
Setting up doxygen, a free tool to document your code, in a few simple steps.
| Type | Article |
| Licence | CPOL |
| First Posted | 19 Jan 2003 |
| Views | 744,931 |
| Downloads | 5,637 |
| Bookmarked | 391 times |
|
|