2011-12-07 15 views
0

私はパッケージPackage1を持っています。これは、パッケージPackDependencyに依存しています。 Package1.dpkはこれを含んでいます条件依存シンボルに依存するパッケージの依存関係/要件を作成するにはどうすればよいですか?

requires 
    vcl, 
    rtl, 
    PackDependency, 
    dbrtl; 

は今、私は条件シンボルCONDITIONが定義されている場合にのみ、このdependenyを持っていると思います。したがって、私は手動に.dpkファイルを変更します。

requires 
    vcl, 
    rtl, 
    {$IFDEF CONDITION} 
    PackDependency, 
    {$ENDIF} 
    dbrtl; 

しかし、これで十分でしょうか?私は.dprojファイルが心配です。

私はPackage1のような2つのパッケージを持っています。私は上記をしたいと思います。そのうちの一つは、その.dprojファイルに以下の行を持っています

<DCCReference Include="PackDependency.dcp"/> 

他のパッケージ.dprojないパッケージもPackDependencyに依存しているにもかかわらず、この行を含んでいます。

  • それは条件付きのシンボルに基づいてrequireパッケージすることが可能である:

    この

    は、いくつかの質問を提起しますか?
  • 「はい」の場合は、.dprojファイルに対して何かする必要がありますか? Delphiがファイルの特定の領域を変更すると、問題が発生する可能性はありますか?
  • 上記の<DCCReference Include...>行が.dprojファイルの1つに含まれていますが、他のパッケージに含まれていないのはなぜですか(どちらのパッケージも.dpkに依存し、Delphiプロジェクトマネージャにも表示されます)。
  • 私は、msbuildを使用してDelphiやコマンドラインからビルドすると、異なる動作をすると思われます。前者は.dpkファイルを調べるかもしれませんが、後者はしますか?

私の究極の目標は、msbuildを使用してコマンドラインから構築することです。コマンドラインとIDEの違いは、私にとっても重要な情報です。

+0

これは簡単にテストされているようです... – GolezTrol

+0

"今すぐ動作し、後で切れる"のを避けたいです。しかし、私は今テスト中です。確かな答えがあったらいいですね。 –

答えて

2

これは、あなたが質問に説明したように、新しいユニットをパッケージに追加するまでうまくいくでしょう!その時点で、条件定義はIDEによって自動的に消去され、再度入力する必要があります(これは迷惑です)。

これを避けるためのエレガントな方法はありません。

DPROJファイルがあまりにも心配しないでください...これらはIDEによって維持されるはずですので、DPKソースの依存関係を削除すると(コンパイル時に)DPROJ内の対応するノードが削除されますコンパイル時に、対応するノードをDPROJに挿入する必要があります)。

+1

ヒントをありがとう!私は新しい依存関係を追加するときに、 'requires'セクションの変更が消えてしまうのを知らなかったのです!条件付きシンボルの追加と削除をテストしたところです。 .dprojには影響しません。参照はちょうどそこにとどまります。 –

+0

DPROJで参照を削除し、ユニット参照で再コンパイルした場合、その依存性を再度追加するかどうかを確認するメッセージが表示されますか?もしそうなら、私が考えることができるのは、プロジェクトを配布するたびに手動でDPROJリファレンスを削除することだけです。 2つの代替パッケージを行うほうが簡単かもしれません:依存関係を持つもの、そうでないもの...もう一度、これは本当にエレガントではありません! – LaKraven

+0

デルファイは.dprojのリファレンスに何か気にしていないようです。私がそれらを削除すると、時には時々、時には再作成されません。時には、IDEの別のビルド設定に切り替えると、その設定がトリガされることがあります。奇妙な。 –

関連する問題