ひとモノBLOG

10 « 2017 / 11 » 12
Sun Mon Tue Wed Thu Fri Sat
- - - 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 - -
profile
SHOO
  • SHOO
  • 機械系の学生。の割にプログラミングとかのほうが得意だったり。
  • RSS
links
BLOG内検索
Adds by DTI Blog

dsssを使うとコンパイルが遅い件
2008/04/12(土) [06:32:21]

dsssを使うとコンパイルが非常に遅くなってしまう。
これは、dsssの用いているビルドツールのrebuildがソース内を読み漁ってimportからコンパイルするべきモジュールを自動で検索するせいだ。
これが働くと、DWTを用いたツールなんかをビルドすると、恐ろしく時間がかかってしまう。
というわけで、この機能を用いずにコンパイルする方法はないか…と思い、いろいろいじった結果、一応の回避方法がわかった。
詳細は以下から。

dsssをインストールした際にできるフォルダの[etc/rebuild/tango]あるいは[etc/rebuild/phobos]というファイルに記述されている
ignore=gcc. object
のような部分を変更し、
ignore=gcc. object tango. win32. dfl. std.
こんな感じにするとうまい具合にこれらのコンパイルをスキップしてくれるようだ。
が、しかし、それでも遅い…
おそらくimportの解析だけはきちんとして、コンパイルという作業のみスキップしているために起こるのだろう…

かといって、dmdだけでコンパイルするとモジュール名の重複でリンクすることができなくなることがわかっている。
main.d
app/data.d
app/instance.d
gui/mainform.d
gui/data.d
という構成のプロジェクトがあったとして、
dmd main.d app/data.d app/instance.d gui/mainform/d gui/data.d
としてコンパイルするとエラーが発生する。
app/data.d と gui/data.d のモジュールが互いに同じモジュール名であるが為、二つともそれぞれのコンパイル過程で data.obj を生成しようとする。これが重複しているのがエラーの原因。dsss(rebuild)を使用する場合、 gui-data.obj や app-data.obj などが生成されるため、問題はないのだが…

そこで、これが改善されるためにはどうなればいいかを考えた。
・dmdがモジュール名重複に対応する
・rebuildがimport解析をしないモードに対応する
・なんかほかにコンパイル補助のツール無いの…?
・ないのならつくればいいぢゃない!

一番いいのはdmdが対応してくれることなんだろうけど…orz


rel="prev"<<Dのscope変数を拡張してほしい | ホーム |

この記事に対するトラックバック

この記事のトラックバックURL

この記事に対するコメント

この記事にコメントする

管理者にだけ表示を許可する
| HOME |