Bud って何?
Bud は D言語でのアプリケーションの構築を助けます。
いままで使用するファイルを列挙してコンパイルしていました。
dmd main.d sub1.d sub2.d ... //めんどい
それを Bud を使うと main.d の指定だけですみます。
bud main.d //らくちん
Bud でデバッグビルドはどうやるの?
Bud が知らないスイッチはコンパイラに渡すようになっています。
だから今までどおりにコンパイルオプションを指定するだけです。
bud main.d -debug //デバッグビルド
プラグマ
追加のプラグマが使えます
追加されたプラグマは Version build で囲んでください。
version(build){ pragma(link,foo); }
link
これはリンクするライブラリを指定します。
//foo.lib にリンクする version(build){ pragma(link,foo); }
定義済みプラグマの lib と違いライブラリを文字列で指定しない
ライブラリは , で区切り列挙できる
//foo.lib と bar.lib と baz.lib にリンクする version(build){ pragma(link,foo,bar,baz); }
nolink
そのモジュールのオブジェクトファイルにリンクしない
version(build){ pragma(nolink); }
ignore
このモジュールはコンパイラおよびリンカに渡されない
all.d なんかに指定するみたい
include
C の #include みたいのファイルを取り込む
target
出力ファイルの名前を指定
通常コマンドラインで最初に指定したファイル名で出力される
それを別な名前で指定できる
複数存在した場合は最初のものが有効
build
そのほかの外部ツールを使う
たとえばリソースファイルをコンパイルするとか
設定は後述の Rule Definition File で行う
export_version
コンパイラに version 識別子を渡す
build_def
リンカに渡す .def ファイルの内容を記述できる
Rule Definition File
マクロ
Cのマクロのような、文字列の置き換えができる。
マクロは別ファイルに定義する
//C #define ONE 1 //MDF replace ONE=1 //ONE に一致するがONETWO には一致しない //MDF replace "ONE"=1 //ONETWO に一致するが ONE には一致しない //MDF replace ONE="1" //引用符で囲まなければ前後に空白文字が入る
replace を regexp に変えると正規表現が使える