【コメント】doxygen【コンソメ】
■ このスレッドは過去ログ倉庫に格納されています
>>274 その方法で解決できました。 文字サイズは見る人によって好みがあると思っていましたので、 stylesheet.cssのフォントサイズ指定の部分を削除しました。 これにより人によって好みの文字サイズにブラウザ側で変更できるようになりました。 (前はブラウザ側でも文字サイズの変更が(通常操作の範囲では)できませんでした。) どうもありがとうございました。 Doxygen で表を表示する方法を教えてください。 ttp://www.doxygen.jp/htmlcmds.html ここの<table>タグ以外にはありますか? Doxygenはドキュメント生成ツールであってドキュメント記述言語ではないから 適宜表は表示されるよ。例えば関数一覧とかファイル一覧とか。 任意の表を記述したいと言うことなら話は別で。 元々html自体に表を記述するタグはtable以外にはないに等しいからねぇ。 横方向に高々2カラムしかないなら<ul>などで代用できなくもないけれど。 >>277 ありがとうございます。 良さそうなのでもうすこしマニュアルを読み込んできます。 >>276-278 私も任意の表をお手軽に作る方法はないかなと思ってました。 今ふと思いついたんですが、関連のタグの組み合わせをALIASESで簡略化したらちょっとはマシかも。 Doxygen 1.6.0で何か変わったことある? 設定とかは変わってないよね? また設定しなおしとか嫌よ。 >>282 二重引用符で囲っていた中で @a とか使ってたのが利かなくなってましたorz まんま " @a hogehoge "な具合に表示されてます。 バグなのか仕様変更なのかは知りません。 >>283 ありがとうございます。 私は@ではなく\で書いているので問題ないですかね。 >>284 それは試してないのでわかりません。 以前のバージョンから、「@」は利かなくて「\」なら利く局面もありましたから、 (例えば @dot 内の URL パラメータに \ref を使うとか) もしかすると問題ないかもしれません。 なお、「"」の代わりに「"」を使えば、「@a」も機能しました。 ソースコメントでの視認性を考えるとやりたくないですが。 >>285 あ、「”」の代わりに「&quot;」です。 (今度はちゃんと表示されるかな) >>285-286 なるほど。 詳細 誠にありがとうございます。 今のdoxygenで問題がないので、 念のためdoxygenバージョンアップするのは 控えておこうかと思います。 補足です。 >>283 のような状況になっているということはつまり、 二重引用符で囲まれている部分が区別されるようになったということで、 いままで単純に1文字として「"」を使ってた部分や、 うっかり片方の引用符を忘れていた部分でエラーが出ます。 doxygenで生成される、 左側の目次(ツリービュー)を自分が好きに 並べる方法している方いらっしゃいませんか? 誰か教えてください。 Windows XP SP2, doxygen 1.6.1です。 ttp://loda.jp/uploader_nrnrnr/?id=10 このhoge.hを同じくこのDoxyfileで HTMLドキュメント化したのですが、 クラスの構成のところで説明の最初の文字が http://imagepot.net/view/125152409985.gif の様に大文字になってしまいます。 自動的に大文字にしてくれるこの仕様を回避したいのですが、 どうすればよろしいでしょうか? よろしくお願い申し上げます。 なお、doxygen 1.5.9でも同様の現象でした。 2chの方ばかり見ておりました。 ありがとうございます。 と思いましたら解決しませんでした。 \ mynamesp::hogeクラスです。とすると、不要な半角の\が入ってしまいます。 ! mynamesp::hogeクラスです。とすると、不要な半角の!が入ってしまいます。 mynamesp::hogeクラスです。とすると、doxygenの抱えるバグ(*)により、mynamesphogeとなってしまいます。 (*)全角文字に半角英数が続き、スコープ解決演算子である::がその後ろに来たとき、::が無視されるというバグです。 どうしたらいいでしょうか? http://loda.jp/uploader_nrnrnr/?id=10&dsq=15701579#comment-15701579 で質問させていただいている者です。 >>294 lodaのコメントは、行頭に「\」や「!」を入れるのが 大文字化されないための書き方という意味じゃなくて、 文の先頭にクラス名がこない書き方を工夫すればという意味だと思う。 # 一覧表以外のところでは大文字化してないから、個人的にはバグじゃないかと思うけど。 「::」が消える件は >>211-213 を参照。 >>295 私もバグではなく仕様だとは思っています。 ::が無視されるのはバグですが。 最速で>>187 さんが触れてますね。 どうもありがとうございました。 プログラミング言語によっては全角文字も識別子に使えることを考えると、 文中に空白で区切られずに書かれてる識別子を正しく認識して欲しいというのは、 日本語の構文を理解する必要のある無茶な要求じゃないかな。 そうか? 別に煽りたい訳じゃ無いけど、消えてしまうのは文字コードの問題だと 考えるのが普通では? だって構文解析いらないでしょ。 >>298 消えてしまうのはバグだと思うけど、 クラスメンバを認識して自動的にリンクを張る機能があるんだから、 その過程で「::」を特別扱いしてると思うのよ。 ていうかごめん、言葉が足りなかったわ。 言いたかったのは、バグが起きにくい書き方をするように 歩み寄ってもいいんじゃないかということなんで。 1.6.1を入れたのだけど、doxywizardで項目名が赤くなるのはどういう意味? >>300 1.6.1前からでも赤くなかった? おそらくデフォルト値から変更された物が赤いんじゃないかと思われる。 >>301 どうもありがとう。確かに入力すると赤くなり、消すと黒くなるから変更されたところだ。 前は1.5.6を使っていただけど赤くはならなかったので、最初はエラーかと思った。 Javaで使っているのですが、クラス階層図や関数の呼び出し図などで、 クラス名がパッケージ名を含む長い名前になるのを避ける方法はあるでしょうか? 例えば、以下のサンプルですと、図からorg.byteml.の部分を取り除きたいです。 http://byteml.sourceforge.net/html/classorg_1_1byteml_1_1serialize_1_1ByteMLBuilder.html doxygenで、C++でhtmlドキュメントを作りたい時、 ここからここまでの範囲のソースはドキュメントしないでね あるいは このクラスはドキュメント化しないでね(ドキュメントに載せないでね) といった指示はできるのでしょうか? よろしくお願いいたします。 >>304 素直な方法は、ドキュメント化したい部分に一通りdoxygen用のコメントをつけて、 EXTRACT_ALL は NO にして、 HIDE_UNDOC_MEMBERS と HIDE_UNDOC_CLASSES を YES にすることでしょうか。 そうすれば、コメントの付いている部分だけがドキュメント化されます。 >>305 ありがとうございます。 私は > EXTRACT_ALL は NO にして、 > HIDE_UNDOC_MEMBERS を YES に まではしているのですが、 HIDE_UNDOC_CLASSES はNOにしています。 というのも、YESにするとドキュメント化したいクラスが 標準ライブラリや他人のライブラリ(doxygenコメント化されていない) の中のあるクラスを継承しているクラスであった場合、 継承関係がグラフ化されなくなってしまうからです。 かといってこのままでは実装用のクラスまでも HTMLドキュメントに出て来てしまうのが ちょっと気持ち悪いので、悩んでおります。 >>306 doxyfile で PREDEFINED = NO_DOXYGEN としておいて、ヘッダの方で #ifndef NO_DOXYGEN 実装用クラス #endif とか私はやってます。 >>307 ありがとうございます。 そんな方法があったんですね。 >>308 後で見返してよく考えたら「NO_DOXYGEN」だと意味逆でしたね。 まあそれはともかく、この方法を使うと、 たとえば利用者マニュアル用 doxyfile と 内部開発者用 doxyfile とかを使い分けて (それぞれ別々の PREDEFINED を設定しておく)、 コード内では #ifndef を使ってマニュアルに出したいものを制御 なんてこともできます。 >>309 なるほど、深いですね。 面白そうです。 ありがとうございます。 #ifndef DOXYGEN 実装用クラス #endif としてみましたが、 クラス一覧に相変わらず実装用クラスが出力されます。 doxygen 1.6.1, Windows XP SP2 Doxyfileは ttp://loda.jp/uploader_nrnrnr/?id=11 です。 恐れ入りますが、>>307 さんのdoxygenのバージョンはいくらでしょうか? ちなみにちゃんと #ifndef DOXYGEN になっています。 #ifdef DOXYGEN だったりはしません。 よろしくお願いいたします。 >>311-312 doxyfile 拝見しました。 1312 行目の EXPAND_AS_DEFINED の方にマクロ名が記述されて いるようなんですが、これを 1305 行目の PREDEFINED の方に 記述して試してもらえますか? ちなみに、私が使用している環境は 1.6.1 で OS は主に Mac OS X と FreeBSD です。 (一昨日くらいまで 1.5.9 使ってましたけど。) あ、でも doxyfile は 1.5.8 の時につくったものでした。 >>312 お前、馬鹿だろw >307を読めば判ることで何とち狂ってるんだか。 >>313 申し訳ございません。 ご指摘の通り大変みっともない間違いをしでかしており、 恥ずかしいかぎりです。 うまく動きました。 ありがとうございました。 ttp://codepad.org/ACEXhsw8 これをdoxygenに食わせると、 クラス->構成のところで exception NS::hoge となります。 画像:ttp://imagepot.net/image/125324281122.jpg つまり何故かstd::が出力されません。 (解説本文にはstd::が出力されるのですが。) これを std::exception NS::hoge と表示させたいのですが、何か方法はありますでしょうか? よろしくお願いいたします。 >>314 まあまあ。 マニュアル読むと、PREDEFINED と EXPAND_AS_DEFINED の説明は 確かにかなり紛らわしいのよ。試行錯誤の過程で勘違いしても仕方がない。 私もかつては戸惑った口。 >>315 お役に立てて何よりです。 doxygen 1.5.8を使っているんだけど、例えばstd::vector<std::vector<int>>が通らないのね。 きちんと> >にしないといけないらしい。 >>318 C++はC++0xになるまではそうでしょ? コメント文でもそうだってことかい? >>319 いやいや、会社でほたえちょる阿呆がおったからソースを見たら、>>で書いていたってことで。 それで気づいたんだが、VC++はエラーにしてくれないんだね。 >>320 そうなのか。 まあどうせC++0xでは認められるんだから VC++もエラーじゃなくていいんじゃね。 ttp://www.doxygen.jp/grouping.html#memgroup これで生成した ttp://www.stack.nl/~dimitri/doxygen/examples/memgrp/html/class_test.html ですが、 今のdoxygen 1.6.1で実行しますと Public Member Functions や Group2 等のグループ名が改行の余白無く上にくっついて表示されませんか? ttp://www.doxygen.jp/grouping.html#memgroupに限らず任意のファイルを htmlにしても起こると思うのですが、皆様はどうでしょうか? >>322 私の方でも同じ現象が出てます。 自分の書き方が悪いのかもと思いつつ、 ほとんど追求してませんでしたけど。 >>323 ありがとうございます。 私は同じsourceで Doxygen1.5.9→1.6.1のアップグレードで症状が発生したため、おそらく仕様変更に伴う不具合だと思っています。 じき直ると期待しています。 > BUILTIN_STL_SUPPORTオプションをオンにしない限り、doxygen は STL クラス を認識しません。 > STLクラス (std::string, std::vector など) を使っていても、STLソース (そ のタグファイル) を入力としてインクルードしたくない場合は、このタグを YES にしてください。 するとdoxygenは、STLクラスを引数に含む関数宣言と定義 (た とえば、func(std::string); と func(std::string) {}) をマッチングします。 また、STLクラスを含む継承・コラボレーション図をより完璧で正確にすることも できます。 といった説明がDoxygen日本語マニュアルにあるのですが、いまひとつ意味がわか りません。 要するにBUILTIN_STL_SUPPORTはデフォルトでYESにしてしまえば良いわけでしょうか? それとも何がデメリットがあるのでしょうか? >>325 Doxywizard で、 BUILTIN_STL_SUPPORT にカーソルを持っていったときに 表示される説明は、もう少し分かりやすいです。 STL のクラスを使ってるけど STL のソースをインクルードしたくない場合に YESにするようにと書いてます。 ファイルの読み込みを抑えたいような場合でしょうか。 逆に処理系付属のヘッダも読み込む設定にしていて、 BUILTIN_STL_SUPPORT も YES にすると、二重定義のような状況になるんじゃないかと思います。 >>326 ありがとうございます。 ちなみに Yahoo!検索 - BUILTIN_STL_SUPPORT ttp://search.yahoo.co.jp/search?p=BUILTIN_STL_SUPPORT&search_x=1&tid=top_ga1_sa&ei=UTF-8&pstart=1&fr=top_ga1_sa&b=11&qrw=0 こんな感じになりました。 どうやら大半の方がデフォルト値のNOにしているようです。 どなたか>>316 の解決策をご教示いただける有識者はいらっしゃいませんでしょうか? どうかよろしくお願い申し上げます。 >>316 その参照してるだけで定義の無いexceptionをエントリとして出せるオプションがあるの? >>329 HIDEUNDOCMEMBERSをNoにして、出力させるとこうなりました。 >>329 EXTRACT_ALL は NO HIDE_UNDOC_MEMBERS は YES HIDE_UNDOC_CLASSES は NO でした。 /** \page hojodocs 補助ドキュメント */ としますと ttp://uploader.rgr.jp/src/up1067.gif の様に 「メインページ」「クラス」「ファイル」というタブと並んで「関連ページ」というタブが出来て その中に補助ドキュメントというページが出来ます。 これを 「メインページ」「クラス」「ファイル」というタブと並んで「補助ドキュメント」というタブが 出来るようにする方法はありませんでしょうか? 単純に/pageを何か適当な物に変えれば良いのではないかと探ってみたのですが どうしても分かりませんでした。 よろしくお願いします。 >>331 うちではexceptionクラスそのものが出なかった。 >>333 左様でございましたか。失礼いたしました。 私の環境は doxygen 1.6.1, Windows XP SP2 で, Doxyfile, hoge.h, 成果物htmlは ttp://loda.jp/uploader_nrnrnr/?id=15 です。 お手数おかけ致しますが、こちらでいかがでしょうか? >>304-315 今更だけど、別の方法があったので。 @cond と @endcond で囲んだ範囲は、 @cond につけたラベルを ENABLED_SECTIONS に含めるかどうかで、 ドキュメント化するかどうかを設定できるようです。 >>335 こりゃいいやと試してみた。 @condと@endcondは独立したコメントブロックにないと巧く認識しないみたいで、ちょっと悩んだ。 # つまり、前後の空行を詰めるとダメっぽい。 それと、処理させないだけならセクションラベルは要らないのだけれどundocumentedにしたのは深謀遠慮。 -- /// \file foo.h /// /// \cond undocumented /// \brief Dummy. /// あーだこーだ class dummy { public: dummy() {} }; /// \endcond /// \brief Foo. /// どーでこーで class foo { public: foo() {} }; -- # どうでもいいけど、JAVADOC_AUTOBRIEFはyesなので念の為。 ありがとうございます。 プリプロセッサを使った方法はエディタで対応する最初と最後をすぐ見つけらられるという利点がありますが、 @condと@endcondを使った方法はコメントだけで解決する->ソースに手を加えてはいないという点が利点ですね。 Windowsでいろんなコンパイラに対応できるライブラリを書いてるんだけど,VC++だと クラスのコンストラクタには呼び出し規約 __fastcall が使えないので,ヘッダファイルに 以下のような定義を書きました(コンストラクタの先頭に書いておくために)。 #if defined(_MSC_VER) //VC++の場合空文字 #define __FASTCALL #elif //その他のコンパイラの場合は__fastcall #define __FASTCALL __fastcall #endif これをDoxygen(1.6.1)でドキュメント化するとき,_MSC_VERが定義されている時と定義されていない 時の説明が両方出るようにしようと思って,いろいろやってみたけどうまく行きません。 上の例はDoxygen用のコメント付けはしていませんが,Doxyfileで PREDEFINEDに_MSC_VER と !_MSC_VER の両方を書いておくと,両方の #define__FASTCALL がドキュメント化されるところまでは 良かったのですが,行末に ///> で異なる説明を書いても両方の説明に同じものが(マージされて) 出てきてしまいます。 良い方法があったら教えてください。 >>338 ちょっと間違い。上の例で #else のところが #elif になってしまっているので 修正したら,_MSC_VER と !MSC_VER を両方 PREDEFINED に書いておく という手は使えませんでした。結局 PREDEFINED にどう書くかで, 片方のドキュメントしか作成されません。 >>339 PREDEFINEDでできませんか? つまり PREDEFINED = DOXYGEN_SHOULD_SKIP_THIS とすれば #ifndef DOXYGEN_SHOULD_SKIP_THIS #if defined(_MSC_VER) //VC++の場合空文字 #define __FASTCALL #elif //その他のコンパイラの場合は__fastcall #define __FASTCALL __fastcall #endif #elif /* DOXYGEN_SHOULD_SKIP_THIS */ /*! 説明を入れる。 */ #define __FASTCALL #endif /* DOXYGEN_SHOULD_SKIP_THIS */ >>340 さすがに両方の説明を個別に表示することは出来ませんが,それで事足りますね。 ありがとうございました。 この方法使うと,Doxygenがスキップしない部分には, #define __FASTCALL "" or __fastcall とかメチャクチャ書けますねw >>338 /// @def __FASTCALL /// ここに両方の場合の説明を書けばいいんじゃないの? __FASTCALL は C++ では予約識別子だな。やめといたほうがいいぞ。 確かに。 予約されているから規格的に言えば未定義の動作になるな。 >>342 それだけだと,#define __FASTCALL あるいは #define __FASTCALL __fastcall のどちらかしか ドキュメント化されないので...>>340 の方法だと,>>341 のようにコンパイラでコンパイルされると 困るようなメチャクチャな説明をドキュメント化できるのでわかりやすい。 理想的には, #define __FASTCALL VC++ではコンストラクタに__fastcallが使えないので空文字として定義される #define __FASTCALL __fastcall VC++以外では__fastcallとして定義される みたいにドキュメント化されるといいんだけど,難しそうなので>>341 に書いたように #define __FASTCALL (null string) or __fastcall VC++ではコンストラクタに__fastcallが使えないので空文字として定義される。VC++以外では__fastcallとして定義される。 のようにドキュメント化されれば実用上は問題ないと思う。 >>343 大文字の方も予約されてるとは知らなかった。ありがと〜。 >>345 メチャクチャな説明がわかりやすいとか、おかしなことを言うね。 実用上問題なければ奇怪な書き方しないほうがいいだろうと思うし。 >>346 別にメチャクチャはまあ言葉のあやなんじゃないですかね。 オフィシャルでも ttp://www.stack.nl/~dimitri/doxygen/ > You can even `abuse' doxygen for creating normal documentation (as I did for this manual). と言っているぐらいですし 多少の奇怪な書き方は許容範囲では? タダの宗教論争になってしまいますが。 >>347 それを指摘するのは無粋。つーか、間抜け。 >>347 許容範囲なんだろうけど、ここでは奇怪な書き方をする必要がない、という話。 >3 ttp://stackoverflow.com/questions/165451/suggest-a-good-doxygen-stylesheet なさそうだね 寧ろ、doxygen.cssをカスタマイズしている人には紹介してほしいなぁ。 ソースを公開しろとまでは言わないから。 後は、こんなのが欲しいなんてリクエストでもあれば創造意欲が沸くかも知れない。 しかしデフォルトのにしておかないと 将来のバージョンアップに毎回追随するのが 結構つらくなるのではと予感。 ttp://www.doxygen.jp/manual.html このサイト死んだね。 privateなメンバのうち、(純粋)仮想関数だけをドキュメントに出力する方法ってないものでしょうか EXTRACT_PRIVATE = YESとすると、見せたくないprivate変数や非仮想関数まで出てきてしまうのがイヤで・・・ >>357 そんな状況いままで無かったからな。 初めて考えてみる。 >>340 が書いた方式を駆使して どうにかできそうな気もするが良いアイディアが浮かばない。 Doxygen 1.6.1 をソースパッケージから VC8 でビルドしようとしたのですが src/translator_*.h が言語毎にいろいろなエンコーディングで保存されていて文字列リテラルの部分でエラーが大量発生する (おそらく多バイト文字に '\' や '"' が含まれる) のですが、Windows でビルドするときは特別な 手続きがいるのでしょうか? クラスメソッドの詳細の、“コンストラクタ・デストラクタ”のセクションに デストラクタが入らないのはdoxygenのバグだよね? あと、@nameコマンドで1つのクラスに同じ名前のメンバグループを 複数作った場合、それぞれが別のグループとして吐き出されるのは仕様? あ、どっちも1.6.1の話ね >>360 > クラスメソッドの詳細の、“コンストラクタ・デストラクタ”のセクションに > デストラクタが入らないのはdoxygenのバグだよね? マジで? 試してくる。 >>360 Version 1.6.1 にて出力されたぞ。 出力されないソースないしヘッダの例をうpしてくれれば確かめるけど? >>362 ソースはマニュアル内のこのページ(ttp://www.doxygen.jp/docblocks.html)の サンプルをそのまま使用 本体のバグでないならヘッダの問題かと思い、いろいろ試してみた結果、 INPUT_ENCODING=Shift_JISにした時に問題が起きた(CP932なら問題無し) ちなみに、出力されないわけじゃなくて、通常の関数と同じセクションに デストラクタが入ってる デストラクタ名がチルダでなくオーバーバーで表示されてたので、 doxygenがデストラクタと認識してくれないのが原因か? >>363 CP932 にしろってオフィシャルでどっかに書いてあったような気がする。 > デストラクタ名がチルダでなくオーバーバーで表示されてたので、 > doxygenがデストラクタと認識してくれないのが原因か? その可能性が高そうだ。 このQtのマニュアルみたいなのを作りたいのですがdoxygenで作れますか。 http://www.kde.gr.jp/ ~ichi/qt-2.3.2/annotated.html >>365 似たようなことはできると思いますが、一致度は保証できません。 TradeMarkとやらで作ったようなことが書かれているので、それでは如何ですか? >>365-366 Qtのマニュアルは開発元内製の非公開のツールで作られているそうです。 doxygenが作られたのもそれが理由だそうで。 ttp://lists.trolltech.com/qt-interest/2007-07/thread00457-0.html EXTRACT_PRIVATE = NO の設定で一部の private 関数を文書化する方法はあるでしょうか? やりたいことは、ある基底クラスに private の仮想関数を定義して (派生クラスでその仮想関数 をオーバーライドするユーザーのために) その関数の仕様を Doxygen で出力することです。 >>369 ちょっと汚いソースになる気もするが、 >>340 と同じようにして Doxygen上にだけprivateをpublicにしちゃえば? ttp://uploader.rgr.jp/src/up1598.png このように、ソース中の'が'と表示されてしまうんですが、 対策をご存じの方いらっしゃいますか? また、他の方がたはこの問題が再現しますか? サンプルソースは ttp://uproda.2ch-library.com/lib200801.zip.shtml DLキーはdoxygen です。 ここのget_widechar.hをDoxygenにかけてhtmlを出力させると 上述の画像のようになります。 html4ではなくxml1の読めるブラウザを使えばいいんでない? # 根本は解決していないけど。 例えば、IE6がこれに該当するからIE8を入れるとか。 どうしても根本的に解決したいなら、ソースを修正するとか出力を加工するとか。 つーか、手元のソースとDoxygenでは再現しないしzipをダウンロードするのは嫌なんだけど、 再現できる状態でここに貼れる程度に短くできない? それと、Doxygenのバージョンも宜しく。 >>372 確かにIE6で見ていたらだめでしたが、 Firefoxなら正しく表示されました。 ソースは ttp://codepad.org/7giB9nil で、Doxygenは1.6.1です。 設定は DOXYFILE_ENCODING = CP932 OUTPUT_LANGUAGE = Japanese このぐらいです。 手元の1.5.9じゃ再現できないや。1.6.1持ちか詳しい人待ちだな。 ■ このスレッドは過去ログ倉庫に格納されています
read.cgi ver 07.5.5 2024/06/08 Walang Kapalit ★ | Donguri System Team 5ちゃんねる