私は、ツリー内に約10の "最終"ビルド構成が設定された複雑なプロジェクトグループを持っています。各ノードには独自のオプションセットがあります。このような何か:Delphi XE2オプションにネストされた制限が設定されていますか?
- ベース
- リリース
- リリースジェネリック1
- リリース決勝1
- ...
- リリース最終5
- リリースジェネリック2
- 決勝6
- ...
- リリースジェネリック1
- デバッグ
- リリースと同じですが、デバッグので
- リリース
- base.optset
- Release.optset
- リリースジェネリックが
- リリース決勝1.optset
- ..
を1.optsetています
- リリースジェネリックが
- Release.optset
これらのオプションセットの主な違いは、上記のツリーで構成された特定の機能(ビルドターゲットとオプションセット)を有効または無効にするさまざまなコンパイラ定義と、必要なものを含むパスの検索です。 各オプションセットには、それぞれのビルド構成に応じた異なる検索パスも含まれています。 プロジェクトグループには100以上のプロジェクトがあり、それらのほとんどはさまざまなレベルの構成で相互に関連しているため、ビルドグループもたくさんありますが、これは現在ビルドしようとしている質問とは関係ありませんプロジェクトは一度に1つです。
問題は、すべてのオプションセットが検索パスを設定していることです。 "Release Generic 1.optset"を含むまで、検索パスは正しく更新され使用されます。しかし、 "Final Final 1"と兄弟は "Release Final 1.optset"によって導入された検索パスを取得しません。 (私はコンパイラのメッセージを見て、dcc32に渡されたパラメータをチェックしたのでこれを知っています)オプションセットが無視されているように見えます。
すべては、オプションセットに "inherit = true"が設定されています。
ビルド構成には何も特定されていません。すべてのプロジェクトは、IDEとオプションセットファイルでのみ設定を使用します。
この問題/制限事項はどこに文書化されていますか?回避策はありますか?オプションではなく、参照として値を設定する
ありがとうございました。
後で編集:これは大きな欠点を持っている を基本的には、それぞれに「ジェネリック1.optsetをリリース」からtehの設定を複製: 私は移動を取得するために、かなり醜い回避策を実施することを決定した「最終リリース.optset?」 「Generic 1.optsetを解放する」に何かを追加する必要があるときに、同じ変更を伝播する5つのオプションセットファイルを編集する必要があります。
MSBUILDコマンドラインツールを使用してビルド構成を明示的に指定してもこの問題は発生しますか? – LaKraven
@LaKraven 開くCMDウィンドウを呼び出すと: その後、発行 rsvars.bat: MSBuildの/ T:コンパイル/ P:設定=リリース-決勝-1 はまったく同じ動作をします。今回は、オプションセットファイルの1つに条件付きの定義を設定したので、今度は余分なものに気付きました。したがって、すべてのオプションセットファイルは、少なくとも1つの検索パスと少なくとも1つの条件付き定義の両方を設定します。 これで、コマンドラインは質問に記載されているように最後のオプションセットからの検索パスを取得しませんが、デバッグ設定で設定されたものの後にDEBUG条件付き定義を追加します... – ciuly
IDEしかし、すべてがうまく見えます。検索パスと条件付きの定義。結局のところ、msbuildの問題かもしれません。 – ciuly