2013-01-17 9 views
7

githubからクローンされ、別途ビルドされたパッケージを使用するDプログラムの推奨開発プロセスは何ですか?一般的に関連したC/C++プロジェクトはcmakeの、autotoolsの、作る使用して構築されている方法にD開発プロセス

など

他のほとんどのビルド仕様は、インストールターゲットを持っています。ビルドにインストールターゲットがあるか、またはビルド時にどこに置かれているかを直接ライブラリにリンクするだけで、そのライブラリのインクルードをD_INCLUDE_PATHに登録してから、DFLAGS=-I<D_INCLUDE_PATH>を使用して直接指示する必要がありますか?

+1

+1です。以前はこれも探していて何も見つけられませんでした。私自身のプロジェクトにCMakeを使い、 '〜/ droot'のようなライブラリを手作りのrootにインストールしました(ライブラリは'〜/ droot/lib'にあります)。そしてCMakeの設定でこのパスを指定します。これは、例えば、 MavenまたはGoを使ってJavaを 'go get'してください。 –

+0

誰かがShake with Dを試しましたか? http://community.haskell.org/~ndm/shake/ – Arlen

答えて

2

私はここにある、私のコメントは、実際の質問への答えすることができ実現:

Dの開発プロセスは、CまたはC++の世界で同様のとは異なることはできません。それは本当に見るのが難しいですか?ほぼすべてのCおよびC++コンパイラは "ネイティブ"コードを生成します。 Dも例外ではない。 .NETをターゲットとすることができるD.NETプロジェクトがありましたが、それは何年も活動していません...

さらに、C/C++ベースのプロジェクトで使用されるすべてのツールは、 CMakeは、Javaプロジェクトや.NETプロジェクトでも使用できます。 MakeやAutotoolsでも同じです。 Javaの世界でMavenとAntがより一般的なのはなぜ別の話ですか?

D開発プロセスでは、MavenまたはAntを使用することができます。手軽に、より簡単で柔軟なものにするために独自のMavenプラグインを書く必要がありますが、それは実行可能であり、実際には素晴らしいプロジェクトになります。

私が見たことから、Dのプログラマーは良い、古いMakeに固執するか、またはすべてを行うためにBASHスクリプトを書いてください。しかし、私はLycusファンデーションの使用者がWAFであるのを見ました。 Pythonプログラマーなら、あなたはただWAFを愛するでしょう。そうでない場合は、同様のことを試してみてください - 私は人々がSCons、Remake、Premakeなどを使用するのを見ました...

DSSS+Rebuildは、Dで作られた非常に有用なツールに最も近いものです。 :(

私はMavenのスタイルツールに取り組んで、私が持っている時間の量を考慮しています - それは2014年に使用可能になります:)を

+1

実際、DのビルドプロセスはC \ C++と大きく異なります。 C \ C++はヘッダファイルを使用しています。変更されたインプリメンテーションファイルを再コンパイルする必要があるのは、インクルードされたヘッダファイルの1つが変更された場合、ヘッダファイルの 'そのファイルなどに含まれています。実装ファイルを変更した場合は、そのファイルを再コンパイルするだけで済みます。 Dは異なります - APIと実装は同じファイルにあり、Dはテンプレートメタプログラミングに大きく依存していますので、何かを変更するとすべてを再コンパイルする必要があります。これにより、インクリメンタルビルドが不可能になります。 –

+0

@IdanArye:いいコメントです。これが私が求めている主な理由です。従来のビルドツールでは、手動で依存関係を指定する方法がたくさんあります。これはDビルドプロセスでは必ずしも当てはまるとは限りません。たとえば、DMDを使用する場合は、Dインタフェースファイル(.di)を生成して高速化することができますが、そうする必要はありません。 –

+0

私はIdanに同意しますが、私はそのような詳細に行きたくありませんでした。結局のところ、質問はそれらについてではなく、私が間違っていなければ全体的なライフサイクルについてでした。 :) – DejanLekic

関連する問題