1: 2011-10-28 (Fri) 00:24:58 SHOO source Edit Backup No.1 as current.
-gsスイッチの説明追加
Line 1: Line 1:
 +TITLE:DMDコンパイラ
 +* 概要 [#aacee34d]
 +Digital Mars製のD言語コンパイラ
 +現在対応しているOSは以下の通り
 +-Windows
 +-Linux
 +-MacOSX
 +-FreeBSD
 +
 +* インストール [#pd95067a]
 +dmdのインストールにはいくつかケースが存在します。
 +目的に合ったものをインストールしましょう。
 +
 +- [[開発版>#trunk_install]] ([[Windows>#trunk_install_win]]|[[Linux>#trunk_install_linux]]|[[MacOSX>#trunk_install_mac]]|[[FreeBSD>#trunk_install_freebsd]])
 +開発版は、Dのバージョンが2.0系で、次回リリースに向けた開発中のバージョン、標準ライブラリがPhobosで、その他にはライブラリが含まれていないものです。
 +::メリット|
 +--- 開発中のプロジェクトに関しては、破壊的変更に非常に強い。常に最小のコストで最新のバージョンに追従することができる。
 +--- 最新を追う楽しさがある
 +--- 常に最新の機能が利用できる
 +--- 開発中の機能を先取りして利用することができる
 +::デメリット|
 +--- エンバグを踏む可能性がある
 +--- ライブラリが利用できないものが多い。ライブラリは一切使えない、あるいは自力で修正して使うしかないと考えた方がいい。最低限svnのtrunkからチェックアウトして利用できなければ難しい。
 +- [[最新版>#least_install]] ([[Windows>#least_install_win]]|[[Linux>#least_install_linux]]|[[MacOSX>#least_install_mac]])~
 +最新版は、Dのバージョンが2.0系の最新バージョン((2011/03/04現在はdmd 2.052))、標準ライブラリがPhobosで、そのほかにはライブラリが含まれていないものです。
 +::メリット|
 +--- 最新を追う楽しさがある
 +--- 常に最新の機能が利用できる
 +--- 既知のバグは最も少ない
 +--- 危険にさらされている個所が破壊的変更によりコンパイルできなくなることがあり、すぐに気付けるため安全。
 +::デメリット|
 +--- 常に最新のバージョンに更新し続けないと面白みはない
 +--- 更新に破壊的変更が含まれる場合がある
 +--- ライブラリが利用できないものが多い。ライブラリは一切使えない、あるいは自力で修正して使うしかないと考えた方がいい。最低限svnのtrunkからチェックアウトして利用できなければ難しい。
 +- [[通常版(D2.0)>#d2_install]] ([[Windows>#d2_install_win]]|[[Linux>#d2_install_linux]]|[[MacOSX>#d2_install_mac]])~
 +通常版(D2.0)は、Dのバージョンが2.0系のαバージョン((2011/03/04現在はdmd 2.052))、標準ライブラリがPhobosで、そのほかにはライブラリが含まれていないものです。
 +::メリット|
 +--- D2.0の機能を取り入れつつ、コンパイラを更新しない限り安定した開発が望める
 +::デメリット|
 +--- 最新ではなく、面白みが薄い。
 +--- 仕様の定まりきっていない中途半端な状態のバージョンである
 +- [[通常版(D1.0)>#d1_install]] ([[Windows>#d1_install_win]]|[[Linux>#d1_install_linux]])~
 +通常版(D1.0)は、Dのバージョンが1.0系の安定バージョン((2009/01/16現在はdmd 1.030))、標準ライブラリがPhobosで、そのほかにはライブラリが含まれていないものです。
 +::メリット|
 +--- ある程度仕様が枯れており、破壊的変更がほぼ無い。
 +--- そのため、ある程度安定した開発が可能。
 +::デメリット|
 +---最新の機能は利用できない。
 +---標準ライブラリ・ユーザーライブラリ問わず古く、重大なセキュリティーエラーでも放置されている可能性が高い。
 +- [[Tango版>#tango_install]] ([[Windows>#tango_install_win]]|[[Linux>#tango_install_linux]]|[[MacOSX>#tango_install_mac]])~
 +Tango版は、DのバージョンがTangoリリース時の1.0系の最新バージョン((2009/04/10現在のTango 0.99.8のバージョンでは、dmd 1.041))、標準ライブラリPhobosが使えない代わりにTangoを利用でき、そのほかにはライブラリが含まれていないものです。
 +::メリット|
 +---Phobos(D1)を使えない代わり、より強力なTangoを利用できる。Phobos(D2)と比べると一長一短でありあまり利点とはいえないかもしれない。
 +---言語仕様およびライブラリが枯れてきているため、破壊的変更は発生し難い。
 +---安定的な開発が可能。
 +::デメリット|
 +---Phobos(D1)の機能を利用できない。((別途Tangobosを導入することである程度利用できるようになる。))
 +---Phobos(D2)の機能を利用できない。つまり、D言語らしい記法のほとんどに対応していない((別途std2を導入することである程度利用出来るようになるかもしれない。))
 +---D言語そのものの最新の機能は利用できない。
 +---Tangoを利用したソフトウェアは、BSDライセンスにより必ずTangoを利用したことを明示しなければならない。
 +---&font(i,b,u,red){Tangoを使うとライセンス問題のためPhobosへのソースコード提供の障害になる可能性がある};
 +---最新版(D2)への移行難易度が跳ね上がる
 +- [[バンドル版>#bundle_installl]] ([[Windows>#bundle_install_win]]|[[Linux>#bundle_install_linux]]|[[MacOSX>#bundle_install_mac]])~
 +バンドル版は、Dのバージョンが1.0系の安定バージョン((2009/01/16現在はdmd 1.030))、標準ライブラリがTango((Tango 0.99.7))で、そのほかに以下のライブラリ及びツールが含まれているものです。
 +-- DWT 231 (based off of SWT 3.4)
 +-- Derelict (DSSS Latest)
 +-- Ddbg Debugger v0.11.3
 +-- DDL (and utility apps)
 +-- Arclib
 +-- DAllegro 4.2.2.0
 +-- Bud
 +-- DCode Editor
 +-- DDBI (with modifications to get Sqlite3 to work)
 +::メリット|
 +---[[通常版(D1.0)>#d1_install]]に比べ、多様なライブラリのインストールの手間が省ける
 +---インストーラが付属しているので、手軽にインストール/アンインストールすることができる。
 +::デメリット|
 +---標準ライブラリがTangoであり、そのデメリットをまるまる引き継ぐ。
 +---パスが通っていないので、設定しない限り専用のプロンプトからでないとコンパイルすることができない。((さもなくばパスは自分で通す必要がある))
 +
 +
 +//==================================================================================================
 +** 開発番の場合&aname(trunk_install); [#m92edab9]
 +([[Windows>#trunk_install_win]]|[[Linux>#trunk_install_linux]]|[[MacOSX>#trunk_install_mac]]|[[MacOSX>#trunk_install_freebsd]])
 +
 +//--------------------------------------------------------------------------------------------------
 +*** Windows版&aname(trunk_install_win); [#ad9a0e6b]
 ++ 必要なものをダウンロード・インストールします
 +:: msysGit|[[Google:msysGit]]
 ++ (書き途中)
 +
 +//--------------------------------------------------------------------------------------------------
 +*** Linux版&aname(trunk_install_linux); [#wcf47c81]
 ++ 必要なものをダウンロード・インストールします
 +:: git
 ++ (書き途中)
 +
 +//--------------------------------------------------------------------------------------------------
 +*** MacOSX版&aname(trunk_install_mac); [#iac42a67]
 +|情報求む!|
 +
 +//--------------------------------------------------------------------------------------------------
 +*** FreeBSD版&aname(trunk_install_freebsd); [#wf7105c7]
 +|情報求む!|
 +
 +
 +//==================================================================================================
 +** 最新版の場合&aname(least_install); [#nee2ddea]
 +([[Windows>#least_install_win]]|[[Linux>#least_install_linux]]|[[MacOSX>#least_install_mac]])
 +
 +//--------------------------------------------------------------------------------------------------
 +*** Windows版&aname(least_install_win); [#o161897d]
 ++必要なものをダウンロードします
 +::dmd.2.0XX.zip|[[公式のChangelog>http://www.digitalmars.com/d/2.0/changelog.html]]より、最も新しいバージョンをダウンロードしてください
 ++dmd.2.0XX.zipを解凍してインストール先に配置します。~
 +以下のような構成になるようにしてください((...は省略しています。実際にはもっと多くのファイルが存在します。))
 + <install_dir>\dmd
 + <install_dir>\dmd\windows
 + <install_dir>\dmd\windows\bin
 + <install_dir>\dmd\windows\bin\dmd.exe
 + <install_dir>\dmd\windows\lib
 + <install_dir>\dmd\linux
 + <install_dir>\dmd\...
 +また、''<install_dir>''にはインストールするディレクトリ名が入りますが、この中に半角スペースが存在してはいけません。リンクの際にエラーが発生します。~
 +基本的には、~
 + C:\dmd\windows\bin\dmd.exe
 + C:\dmd\linux
 + C:\dmd\...
 +となるように配置するといいでしょう。~
 +zipファイル内部に含まれているdmフォルダを''<install_dir>\dm''に上書きして保存します。
 ++PATHを通します。~
 +''<install_dir>''\dmd\windows\bin にパスを通します。~
 +パスの通し方は[[下記付録に記述します。>#path_setting]]~
 +''<通したいパス>''を、 ''<install_dir>''\dmd\bin や ''<install_dir>''\dm\bin と読み替えてください。~
 +なお、このパスを通す作業は、コマンドプロンプトから
 +#code(console){{
 +dmd main.d
 +}}
 +などと言ったように、簡単な実行が行えるようにするために行います。
 ++以上です
 +
 +//--------------------------------------------------------------------------------------------------
 +*** Linux版(Ubuntu)&aname(least_install_linux); [#qcaf34a3]
 +|情報求む|
 +
 ++必要なものをダウンロードします
 +::dmd_2.0XX_i386.deb|[[公式のChangelog>http://www.digitalmars.com/d/2.0/changelog.html]]より、最も新しいバージョンをダウンロードしてください
 ++debパッケージをsudoしてインストールします。
 + user1$~ sudo dpkg -i dmd_2.0xx_i386.deb
 +debパッケージは/usr/binにバイナリが配置されるので別途pathの設定は必要ありません。又リンカオプション等も
 +あらかじめ用意された/etc/dmd.confの設定内容で問題ありません。
 ++以上です
 +
 +*** MacOSX版&aname(least_install_mac); [#qcaf34a3]
 +Windows版を参考にzipをDLしてください.中にosxというMac用のディレクトリがあるのでdmd2/osx/binをシェルのPATHに追加して下さい.既に実行権限はついているので,rehashを行えばdmdコマンドが使えるようになります.
 +
 +
 +
 +
 +//==================================================================================================
 +** 通常版(D2.0)の場合&aname(d2_install); [#c61b8992]
 +([[Windows>#d2_install_win]]|[[Linux>#d2_install_linux]]|[[MacOSX>#d2_install_mac]])
 +
 +//--------------------------------------------------------------------------------------------------
 +*** Windows版&aname(d2_install_win); [#gc2aaf49]
 ++必要なものをダウンロードします
 +::dmd.2.028.zip|[[公式のダウンロードページ>http://www.digitalmars.com/d/download.html]]より、dmd.2.014.zipをダウンロードしてください
 ++dmd.2.028.zipを解凍してインストール先に配置します。~
 +以下のような構成になるようにしてください((...は省略しています。実際にはもっと多くのファイルが存在します。))
 + <install_dir>\dmd
 + <install_dir>\dmd\windows
 + <install_dir>\dmd\windows\bin
 + <install_dir>\dmd\windows\bin\dmd.exe
 + <install_dir>\dmd\windows\lib
 + <install_dir>\dmd\linux
 + <install_dir>\dmd\...
 +また、''<install_dir>''にはインストールするディレクトリ名が入りますが、この中に半角スペースが存在してはいけません。リンクの際にエラーが発生します。~
 +基本的には、~
 + C:\dmd\windows\bin\dmd.exe
 + C:\dmd\linux
 + C:\dmd\...
 +となるように配置するといいでしょう。~
 +zipファイル内部に含まれているdmフォルダを''<install_dir>\dm''に上書きして保存します。
 ++PATHを通します。~
 +''<install_dir>''\dmd\windows\bin にパスを通します。~
 +パスの通し方は[[下記付録に記述します。>#path_setting]]~
 +''<通したいパス>''を、 ''<install_dir>''\dmd\bin などと読み替えてください。~
 +なお、このパスを通す作業は、コマンドプロンプトから
 +#code(console){{
 +dmd main.d
 +}}
 +などと言ったように、簡単な実行が行えるようにするために行います。
 ++以上です
 +
 +//--------------------------------------------------------------------------------------------------
 +*** Linux版&aname(d2_install_linux); [#k3aaaefb]
 +|情報求む|
 +
 +//--------------------------------------------------------------------------------------------------
 +*** MacOSX版&aname(d2_install_mac); [#k3aaaefb]
 +|情報求む|
 +
 +//==================================================================================================
 +** 通常版(D1.0)の場合&aname(d1_install); [#s810bb97]
 +([[Windows>#d1_install_win]]|[[Linux>#d1_install_linux]])
 +*** Windows版&aname(d1_install_win); [#eb6f9dc9]
 ++必要なものをダウンロードします
 +::dmd.1.030.zip|[[公式のダウンロードページ>http://www.digitalmars.com/d/download.html]]より、dmd.1.030.zipをダウンロードしてください
 +::dmc.zip|[[公式のダウンロードページ>http://www.digitalmars.com/d/download.html]]より、dmc.zipをダウンロードしてください
 ++dmd.1.030.zipを解凍してインストール先に配置します。~
 +以下のような構成になるようにしてください((...は省略しています。実際にはもっと多くのファイルが存在します。))
 + <install_dir>\dmd
 + <install_dir>\dmd\bin
 + <install_dir>\dmd\bin\dmd.exe
 + <install_dir>\dmd\...
 + <install_dir>\dmd\lib
 + <install_dir>\dmd\...
 + <install_dir>\dm
 + <install_dir>\dm\bin
 + <install_dir>\dm\bin\dmc.exe
 + <install_dir>\dm\...
 +また、''<install_dir>''にはインストールするディレクトリ名が入りますが、この中に半角スペースが存在してはいけません。リンクの際にエラーが発生します。~
 +基本的には、
 + C:\dmd\bin\dmd.exe
 + C:\dmd\...
 + C:\dm\bin\dmc.exe
 + C:\dm\...
 +となるように配置するといいでしょう。
 ++dmc.zipを解凍してインストール先に上書きします。~
 +zipファイル内部に含まれているdmフォルダを''<install_dir>\dm''に上書きして保存します。
 ++PATHを通します。~
 +''<install_dir>''\dmd\bin 及び ''<install_dir>''\dm\bin にパスを通します。~
 +パスの通し方は[[下記付録に記述します。>#path_setting]]~
 +''<通したいパス>''を、 ''<install_dir>''\dmd\bin や ''<install_dir>''\dm\bin と読み替えてください。~
 +なお、このパスを通す作業は、コマンドプロンプトから
 +#code(console){{
 +dmd main.d
 +}}
 +などと言ったように、簡単な実行が行えるようにするために行います。
 ++以上です
 +
 +//--------------------------------------------------------------------------------------------------
 +*** Linux版&aname(d1_install_linux); [#d316fe52]
 +|情報求む|
 +
 +//==================================================================================================
 +** Tango版の場合&aname(tango_install); [#d05c09c9]
 +([[Windows>#tango_install_win]]|[[Linux>#tango_install_linux]]|[[MacOSX>#tango_install_mac]])
 +*** Windows版&aname(tango_install_win); [#aeaee16d]
 ++必要なものをダウンロードします
 +::tango-0.99.8-bin-win32-dmd.1.041.zip|~
 +[[公式のダウンロードページ>http://www.dsource.org/projects/tango/wiki/DmdDownloads]]より、~
 +current release as a zip~
 +をダウンロードしてください。~
 +現在Tangobosがバンドルされているものは提供されていない模様。Tangobosが必要な場合は別途ダウンロードして利用する必要がある。
 ++tango-0.99.8-bin-win32-dmd.1.041.zipを解凍してインストール先に配置します。~
 +(解凍先のフォルダはtango-0.99.8-bin-win32-dmd.1.041ではなく、dmdとでも名前を変えたほうが扱いやすいかと思います。以下はそのように改名したものとして扱います)~
 +以下のような構成になるようにしてください((...は省略しています。実際にはもっと多くのファイルが存在します。))
 + <install_dir>\dmd
 + <install_dir>\dmd\bin
 + <install_dir>\dmd\bin\dmd.exe
 + <install_dir>\dmd\...
 + <install_dir>\dmd\lib
 + <install_dir>\dmd\...
 + <install_dir>\dmd\import
 + <install_dir>\dmd\import\tango
 + <install_dir>\dmd\...
 +また、''<install_dir>''にはインストールするディレクトリ名が入りますが、この中に半角スペースが存在してはいけません。リンクの際にエラーが発生します。~
 +基本的には、
 + C:\dmd\bin\dmd.exe
 + C:\dmd\bin\sc.ini
 + C:\dmd\bin\link.exe
 + C:\dmd\...
 +となるように配置するといいでしょう。
 ++PATHを通します。~
 +''<install_dir>''\dmd\bin にパスを通します。~
 +パスの通し方は[[下記付録に記述します。>#path_setting]]~
 +''<通したいパス>''を、 ''<install_dir>''\dmd\bin などと読み替えてください。~
 +なお、このパスを通す作業は、コマンドプロンプトから
 +#code(console){{
 +dmd main.d
 +}}
 +などと言ったように、簡単な実行が行えるようにするために行います。
 ++以上です
 +*** Linux版&aname(tango_installl_linux); [#e229544b]
 +|情報求む|
 +
 +*** MacOSX版&aname(tango_install_mac); [#ve723c4b]
 +|情報求む|
 +
 +//*** FreeBSD版&aname(tango_install_freebsd);
 +//|情報求む|
 +
 +** バンドル版の場合&aname(bundle_installl); [#h7bd4a88]
 +([[Windows>#bundle_install_win]]|[[Linux>#bundle_install_linux]])
 +//--------------------------------------------------------------------------------------------------
 +*** Windows版&aname(bundle_installl_win); [#o9d1f68b]
 ++必要なものをダウンロードします
 +::dmd-win32snaphot-0.6.2.exe|[[公式のダウンロードページ>http://www.digitalmars.com/d/download.html]]から[[Easy Dのプロジェクトのページ>http://www.fsdev.net/versions/show/1]]に飛んでください。そのページの下のほうにあるDownloadのリンクからダウンロードします。
 ++インストーラを実行します。
 +++Nextをクリックします&br;&ref(bundle_install_01.png,50%);
 +++規約を読んで''I Agree''をクリックします&br;&ref(bundle_install_02.png,50%);
 +++規約を読んで''I Agree''をクリックします&br;&ref(bundle_install_03.png,50%);
 +++規約を読んで''I Agree''をクリックします&br;&ref(bundle_install_04.png,50%);
 +++規約を読んで''I Agree''をクリックします&br;&ref(bundle_install_05.png,50%);
 +++インストール先を入力し、''Install''を押します。&br;この際、インストール先のパスには半角スペースが入ってはなりません。&br;デフォルトのままが良いでしょう。&br;&ref(bundle_install_06.png,50%);
 +++Readmeの文書が出ますが、閉じて''Finish''をクリックします&br;&ref(bundle_install_07.png,50%);
 ++これで一応インストールは終了です。&br;&ref(bundle_install_08.png,25%);
 ++次にコンパイルの確認をします。
 +++''スタート>すべてのプログラム>Easy D>Compiler Shell'' を起動
 +++あとは通常のコマンドラインからコンパイルする方法と同様にコンパイルすることができます。
 +++詳しくは HowTo/実行ファイルを作る などをご覧ください。
 +++''ただし、 dmd main.d -L+tango-user-dmd.lib という感じで、-L+tango-user-dmd.libを利用して明示的にtangoのスタティックライブラリをリンクさせる必要があるようです。''
 +++こんな感じになるはずです。
 +#code(console){{{
 +Shell setup for Digital Mars D Compiling and Debugging
 +build software: dsss build [-g] main_file.d (-g for debugging)
 +debug software: ddbg exe_file.exe
 +change which drive you're on: [Drive Letter]:\
 +eg. C:\ to change to C drive
 +Microsoft Windows [Version 6.1.7000]
 +Copyright (c) 2006 Microsoft Corporation.  All rights reserved.
 +
 +C:\> cd /D C:\dproject
 +
 +C:\dproject> dmd main.d -L+tango-user-dmd.lib
 +
 +C:\dproject> main.exe
 +Hello, world!
 +
 +C:\dproject>
 +}}}
 +&ref(bundle_install_09.png,25%,left);~
 +◀実際の画面
 +#clear
 ++必要ならば、sc.iniを書き換えます。
 +++sc.iniを書き換えると、-L+tango-user-dmd.libを記述しなくともコンパイルを行うことが可能となります。
 +++''<install_dir>''\dmd\bin\sc.ini を以下のような内容に書き換えます。~
 +#code(ini,sc.ini);
 ++以上です。
 +
 +*** Linux版&aname(bundle_installl_linux); [#c1cd417c]
 +現在Linux版の提供はありません。
 +
 +* 使い方 [#p607c673]
 +**コマンドラインスイッチの解説((参考:http://www.kmonos.net/alang/d/1.0/dmd-windows.html)) [#l1d5218e]
 +#region(dmdのヘルプ){{{{
 +#code(console){{{
 +$ dmd
 +DMD32 D Compiler v2.056
 +Copyright (c) 1999-2011 by Digital Mars written by Walter Bright
 +Documentation: http://www.digitalmars.com/d/2.0/index.html
 +Usage:
 +  dmd files.d ... { -switch }
 +
 +  files.d        D source files
 +  @cmdfile      read arguments from cmdfile
 +  -c            do not link
 +  -cov          do code coverage analysis
 +  -D            generate documentation
 +  -Dddocdir      write documentation file to docdir directory
 +  -Dffilename    write documentation file to filename
 +  -d            allow deprecated features
 +  -debug        compile in debug code
 +  -debug=level  compile in debug code <= level
 +  -debug=ident  compile in debug code identified by ident
 +  -debuglib=name    set symbolic debug library to name
 +  -defaultlib=name  set default library to name
 +  -deps=filename write module dependencies to filename
 +  -g            add symbolic debug info
 +  -gc            add symbolic debug info, pretend to be C
 +  -H            generate 'header' file
 +  -Hddirectory  write 'header' file to directory
 +  -Hffilename    write 'header' file to filename
 +  --help        print help
 +  -Ipath        where to look for imports
 +  -ignore        ignore unsupported pragmas
 +  -inline        do function inlining
 +  -Jpath        where to look for string imports
 +  -Llinkerflag  pass linkerflag to link
 +  -lib          generate library rather than object files
 +  -man          open web browser on manual page
 +  -map          generate linker .map file
 +  -noboundscheck turns off array bounds checking for all functions
 +  -nofloat      do not emit reference to floating point
 +  -O            optimize
 +  -o-            do not write object file
 +  -odobjdir      write object & library files to directory objdir
 +  -offilename    name output file to filename
 +  -op            do not strip paths from source file
 +  -profile      profile runtime performance of generated code
 +  -property      enforce property syntax
 +  -quiet        suppress unnecessary messages
 +  -release      compile release version
 +  -run srcfile args...  run resulting program, passing args
 +  -unittest      compile in unit tests
 +  -v            verbose
 +  -version=level compile in version code >= level
 +  -version=ident compile in version code identified by ident
 +  -vtls          list all variables going into thread local storage
 +  -w            enable warnings
 +  -wi            enable informational warnings
 +  -X            generate JSON file
 +  -Xffilename    write JSON file to filename
 +}}}
 +}}}}
 +***'''<filename>''' [#cc72d253]
 +直接ファイル名を指定します。ファイルの拡張子は下記表のいずれかとなっています。
 +|=拡張子|=説明|h
 +|~ *.d|D言語のソースファイル|
 +|~ *.dd|DDocのソースファイル|
 +|~ *.di|D インターフェイスファイル|
 +|~ *.obj|リンクしたい中間ファイル(オブジェクトファイル)|
 +|~ *.lib|検索対象にするオブジェクトコードライブラリ|
 +|~ *.exe|出力する実行ファイルの名前|
 +|~ *.def|実行モジュール定義ファイル|
 +|~ *.res|リソースファイル|
 +
 +***@'''<cmdfile>''' [#rf9165dd]
 +レスポンスファイルを指定できます。コンパイラへの引数とスイッチを、テキストファイル ''<cmdfile>'' から読み込むことができます。~
 +何回も実行する場合はレスポンスファイルに引数を記録しておいた方が良いでしょう。
 +例として以下にDWTを用いたプログラムのコンパイルに使うレスポンスファイルの一例を示します。ここでは拡張子を*.rspとしますが、拡張子は何でも構いません。~
 +#code(title=build.rsp){{
 +main.d
 +myshell.d
 +dwt.lib
 +advapi32.lib
 +comctl32.lib
 +comdlg32.lib
 +gdi32.lib
 +kernel32.lib
 +shell32.lib
 +ole32.lib
 +oleaut32.lib
 +olepro32.lib
 +oleacc.lib
 +user32.lib
 +usp10.lib
 +msimg32.lib
 +opengl32.lib
 +shlwapi.lib
 +-inline
 +-release
 +-O
 +-L/SUBSYSTEM:windows:5
 +-version=WindowsXP
 +-oftest.exe
 +}}
 +このレスポンスファイルを用いたコンパイル方法は以下。
 +#code(console){{
 +dmd @build.rsp
 +}}
 +
 +*** -c [#i102002c]
 +このコマンドラインスイッチを指定すると、リンクをしなくなります。つまり、実行ファイルは作られませんが、中間ファイル(objファイル)が生成されます。~
 +分割コンパイルなどに利用します。
 +#code(console){{
 +dmd -c main.d -ofmain.obj
 +dmd -c test.d -oftest.obj
 +dmd main.obj test.obj -oftest.exe
 +}}
 +*** -cov [#n4fc6173]
 +コードカバレッジ解析を有効にします。このコマンドラインスイッチをつけてコンパイルしてできた実行ファイルを実行する際にコードカバレッジ解析が行われます。コードカバレッジは、何回も実行されてパフォーマンスが要求される個所や、unittestのカバーしているところを明らかにします。~
 +#code(d,title=main.d){{
 +import tango.io.Stdout;
 +int test()
 +{
 +   return 1;
 +}
 +unittest
 +{
 +   assert(test() == 1);
 +}
 +int main()
 +{
 +   Stdout(test()).newline;
 +   return 0;
 +}
 +}}
 +#code(console){{
 +dmd main.d -cov -unittest -g -debug -ofmain.exe
 +main.exe
 +}}
 +
 +*** -D [#m7bb4ae3]
 +ソースコード内のDDoc形式のコメントからドキュメントを生成します。candydoc等と組み合わせて利用するとよいでしょう。
 +*** -Dd<docdir> [#m1261010]
 +ドキュメントの出力先を指定することができます。
 +*** -Df<filename> [#v1e33b6d]
 +ドキュメントのファイル名を指定することができます。
 +*** -d [#m680d0a6]
 +deprecatedでマークされた、非推奨のフィーチャを利用することができるようになります。どうしてもというとき以外は使用しないことをお勧めします。
 +*** -debug [#i0196cb1]
 +デバッグモードでコンパイルします。コード内部ではdebug文が実行されるようになります。
 +
 +*** -debug='''<level>''' [#g75459a7]
 +デバッグモードでコンパイルします。さらに'''<level>'''以下のdebug('''<level>''') 文が実行されるようになります。
 +*** -debug='''<ident>''' [#g1167fbb]
 +デバッグモードでコンパイルします。さらにdebug('''<ident>''') 文が実行されるようになります。
 +*** -debuglib='''<name>''' [#f8d22354]
 +デバッグ時に使用するコアライブラリを指定します。標準ライブラリ等のデバッグ情報が欲しい場合に利用することができます。
 +*** -defaultlib='''<name>''' [#q638984a]
 +デバッグ時以外のときの標準的なコアライブラリを指定します。
 +*** -g [#i3110e25]
 +デバッグ情報を付与します。
 +*** -gc [#cbca7caf]
 +C用のデバッグ情報を付与します。デバッグ情報がCの形式でしか利用できないときに使用します。
 +*** -gs [#v82ec719]
 +スタックフレームを必ず生成するようにします。
 +*** -H [#sd87021b]
 +ヘッダファイルを生成します。''.di''ファイルのことです。
 +*** -Hd'''<hddir>''' [#dd5392d1]
 +ヘッダファイルを出力する出力先を指定します。
 +*** -Hf'''<filename>''' [#s3ff550f]
 +出力するヘッダファイルの名前を指定します。
 +*** --help [#w8c1a99f]
 +ヘルプの情報を出力します。
 +*** -I'''<Path>''' [#y4cf5862]
 +importで検索するディレクトリを追加します。
 +*** -ignore [#mb9ce323]
 +サポートされていないpragmaは無視するようにします。
 +*** -inline [#zd68e8a6]
 +インライン関数にできるものはインライン展開して高速化します。最適化に関するオプションです。
 +*** -J'''<path>''' [#c63e38e6]
 +improt('''<path>''')文で検索するディレクトリを追加します。
 +*** -L'''<linkerflag>''' [#yba35799]
 +リンカに渡すフラグを追加します。
 +*** -lib [#ef224f6f]
 +スタティックリンクライブラリを生成します。
 +*** -man [#w8f49561]
 +オンラインマニュアルを表示します。
 +*** -map [#bc88c695]
 +mapファイルを生成するオプションです。
 +*** -noboundscheck [#be520010]
 +配列の境界チェックを行わないようにするオプションです。高速化が見込めますがその分危険です。基本的にはこのオプションは指定しないようにしましょう。
 +*** -nofloat [#i68929fc]
 +浮動小数点演算コードが存在する場合であっても、オブジェクトファイルから __fltused への参照を除去します。ライブラリコードに対して有用です。 (Windows専用)
 +*** -O [#t49249ac]
 +最適化を行います。
 +*** -o- [#zcf410e7]
 +中間ファイル(objファイル)を生成しません。
 +*** -od'''<objdir>''' [#n6392f8a]
 +中間ファイル(objファイル)の出力先のディレクトリを指定します。
 +*** -of'''<filename>''' [#gd69eb94]
 +中間ファイルの名前を指定します
 +*** -op [#xa09c4a9]
 +このスイッチが入っていると、ファイル名からパスに関する情報を消し去りません。階層情報を保ったまま中間ファイルを生成します。
 +*** -profile [#y9f029d0]
 +コードの実行時のパフォーマンスをプロファイリングします。
 +
 +*** -property [#c33cd713]
 +ユーザー定義プロパティが使えるのは、@propertyをつけたもののみと限定することができます。
 +
 +*** -quiet [#q7434e37]
 +不必要なメッセージは出力しないようにします。警告文などが削除されるため、あまりお勧めしません。
 +*** -release [#j381c5a0]
 +リリースバージョンとしてコンパイルします。最適化に関するオプションです。
 +*** -run '''<srcfile>''' '''[args...]''' [#v860ef87]
 +コンパイルした実行ファイルをそのまま'''[args...]'''を渡して実行します。
 +*** -unittest [#s9d1b6dd]
 +ユニットテストを行います。このスイッチをつけて実行ファイルを生成した場合、その実行時にユニットテストが呼び出されます。この際にコードカバレッジも行われます。実行ファイルはユニットテストが失敗するとエラーメッセージを出して終了します。
 +*** -v [#za88a031]
 +コンパイル時の情報を出力するようになります。
 +*** -version='''<level>''' [#s0d310ce]
 +'''<level>'''以上のversion('''<level''')文が実行されるようになります。
 +*** -version='''<ident>''' [#r01f6463]
 +version('''<ident>''')文が実行されるようになります。
 +*** -vtls [#a0786bff]
 +スレッドローカルストレージとなる全ての変数をリストアップします。
 +*** -w [#mc959686]
 +警告を有効にして、警告に引っかかるとコンパイルエラーとします。なるべくつけても通るようにするとよいでしょう。
 +*** -wi [#l5da6ad6]
 +警告文を有効にします。警告が出てもコンパイルエラーとはなりません。可能なら-wでエラーとしたほうが良いでしょう。
 +*** -X [#u7a226b2]
 +JSONファイルを生成します。
 +*** -X'''<filename>''' [#xef1770d]
 +JSONファイルを生成するときの名前を指定します。
 +
 +* 関連 [#e6ad0d7f]
 +[[HowTo/実行ファイルを作る]]
 +
 +* 逆リンク [#i1719f0a]
 +#related
 +
 +
 +* 付録 [#c816acab]
 +** パスの通し方&aname(path_setting); [#r19c3ffb]
 +*** Windows XP [#qf158d12]
 ++スタート
 ++「マイ コンピュータ」を右クリック
 ++「プロパティ」をクリック
 ++「詳細設定」のタブをクリック
 ++「環境変数」をクリック
 ++システム環境変数の「Path」をダブルクリック or Pathを選択した状態で編集ボタンをクリック
 ++変数値のテキストボックスの先頭に、「''<通したいパス>'';」を追加する。~
 +加えるパスの、最後のセミコロンは忘れてはいけません。~
 +ex) C:\dmd\bin と C:\dm\bin にパスを通したい場合
 + C:\dmd\bin;C:\dm\bin;C:\usr\local\bin;%SystemRoot%\system32;%SystemRoot%;
 ++「OK」をクリックして、システム変数の編集を閉じる
 ++「OK」をクリックして、環境変数を閉じる
 ++「OK」をクリックして、システムのプロパティを閉じる
 ++「OK」をクリックして、システムのウィンドウを閉じる
 +
 +*** Windows Vista [#i4c887c2]
 ++スタート
 ++「コンピュータ」を右クリック
 ++「プロパティ」をクリック
 ++「システムの詳細設定」をクリック(左側にある)
 ++UACのダイアログが出るので「続行」をクリック
 ++「環境変数」をクリック
 ++システム環境変数の「Path」をダブルクリック or Pathを選択した状態で編集ボタンをクリック
 ++変数値のテキストボックスの先頭に、「''<通したいパス>'';」を追加する。~
 +加えるパスの、最後のセミコロンは忘れてはいけません。~
 +ex) C:\dmd\bin と C:\dm\bin にパスを通したい場合
 + C:\dmd\bin;C:\dm\bin;C:\usr\local\bin;%SystemRoot%\system32;%SystemRoot%;
 ++「OK」をクリックして、システム変数の編集を閉じる
 ++「OK」をクリックして、環境変数を閉じる
 ++「OK」をクリックして、システムのプロパティを閉じる
 ++「OK」をクリックして、システムのウィンドウを閉じる
 +
 +*** Windows 7 [#d1d0ef6f]
 +ほとんどWindows Vistaと変わりませんが、UACのプロンプトが出ませんでした。
 ++スタート
 ++「コンピューター」を右クリック
 ++「プロパティ」をクリック
 ++「システムの詳細設定」をクリック(左側にある)
 ++「環境変数」をクリック
 ++システム環境変数の「Path」をダブルクリック or Pathを選択した状態で編集ボタンをクリック
 ++変数値のテキストボックスの先頭に、「''<通したいパス>'';」を追加する。~
 +加えるパスの、最後のセミコロンは忘れてはいけません。~
 +ex) C:\dmd\bin と C:\dm\bin にパスを通したい場合
 + C:\dmd\bin;C:\dm\bin;C:\usr\local\bin;%SystemRoot%\system32;%SystemRoot%;
 ++「OK」をクリックして、システム変数の編集を閉じる
 ++「OK」をクリックして、環境変数を閉じる
 ++「OK」をクリックして、システムのプロパティを閉じる
 ++「OK」をクリックして、システムのウィンドウを閉じる
 +
 +***Linux [#j4b9ebf2]
 +|情報求む|
 +
 +* 投票とコメント [#w3d39af6]
 +#vote(#lastvote:1d89f68ab9a19842951b5662b9b012b7,大変参考になった[2],参考になった[2],あまり参考にならなかった,まったく参考にならなかった)
 +#pcomment


Front page   Edit Diff Backup Upload Copy Rename ReloadPrint View   New Page Page list Search Recent changes   Help   RSS of recent changes (RSS 1.0) RSS of recent changes (RSS 2.0) RSS of recent changes (RSS Atom) Powered by xpWiki
Counter: 14444, today: 1, yesterday: 2
メインメニュー

ログイン

ユーザー名:


パスワード:





パスワード紛失  |新規登録

Menu