問題タブ [vsprops]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 同じプロジェクトからDLLと静的ライブラリの両方を構築する
Visual Studio2005でコンパイルされているネイティブC++ライブラリ(Win32、MFCなし)がいくつかあり、多くのソリューションで使用されています。
それらを使用している特定のソリューションのニーズに応じて、静的ライブラリまたはDLLのいずれかとしてコンパイルおよびリンクすることを選択できるようにしたいと思います。
これを行うための最良の方法は何ですか?私はこれらのアプローチを検討しました:
1.複数のプロジェクトファイル
- 例:「foo_static.vcproj」と「foo_dll.vcproj」
- Pro:新しいライブラリ用に簡単に生成できます。手動でvcprojを変更する必要はありません。
- 短所:2か所の設定やファイルリストなどが簡単に同期しなくなります。
2.単一のプロジェクトファイル、複数の構成
- 例:「Debug|Win32」と「DebugDLL|Win32」など。
- 長所:ファイルリストの同期を維持するのは簡単です。コンパイルオプションの同期を維持するのはやや簡単です
- 短所:Win32とスマートデバイスの両方のターゲット用にビルドしているので、すでに複数の構成があります。組み合わせ爆発を悪化させたくない(「FooPhone用の静的ライブラリ| WinMobile 6」、「FooPhone用のダイナミックライブラリ| WinMobile 6」、「BarPda用の静的ライブラリ| WinMobile6」など)。
- さらに悪い点:VS 2005には、プラットフォーム「Foo」用に定義された構成がある場合、ソリューション内の他のすべてのプラットフォームにそれが本当に必要であり、構成/プラットフォーム構成のすべての順列を無計画に挿入すると想定するという悪い習慣があります。有効かどうかに関係なく、影響を受けるvcprojファイル。(バグはMSに提出され、WONTFIXとしてクローズされました。)
3.単一のプロジェクトファイル、vspropsファイルを介して静的または動的を選択
- 例:適切なvcprojフラグメントをプロパティシートファイルに保存し、静的ライブラリが必要な場合は「FooApp静的ライブラリ」プロパティシートをconfig / platformの組み合わせに適用し、DLLが必要な場合は「FooAppDLL」プロパティシートを適用します。
- 長所:これは私が本当にやりたいことです!
- 短所:それは不可能のようです。 静的ライブラリと動的ライブラリを切り替える.vcproj属性(Configuration要素のConfigurationType属性)は、.vspropsファイルでオーバーライドできないようです。これらのファイル用にMicrosoftが公開しているスキーマには、<Tool>要素と<UserMacro>要素のみがリストされています。
編集:誰かがそれを提案した場合に備えて、私は#3のより「賢い」バージョンも試しました。ここでは、「2」(DLL)または「 4 "(静的ライブラリ)、および.vcprojの構成をに変更しましたConfigurationType="$(ModuleConfigurationType)"
。Visual Studioは、警告なしにサイレントに属性を削除し、。に置き換えますConfigurationType="1"
。とても役に立ちました!
私はより良い解決策を逃していますか?
visual-studio-2008 - VS2008: プロパティ シート (vsprops) にカスタム ビルド ルールを追加しますか?
プロジェクトのカスタム ビルド ステップ用に CUDA SDK に付属する CUDA .rules ファイルを使用しています。
プロパティの重複を避けるために、CUDA ルールのプロパティを .vsprops ファイルで定義したいと思います。何らかの理由で、プロパティ ツリーの CUDA ルール ブランチがどのプロパティ シートにも表示されず、メインの構成シートの下にのみ表示されます。
テキスト版で.vspropsを編集してセクションを手動で追加しようとしましたが、ビジュアルスタジオではまだ表示されない変更はありません。
これを行う方法はありますか?
c++ - vsprops (プロパティ シート) ファイルにプラットフォーム固有のセクションを含めることはできますか?
ソリューション内のすべてのプロジェクトに共通のインクルード パスと lib パスを含む vsprops ファイルを作成しています。
ただし、Win32/x64 にすることができる lib パスのプラットフォーム固有のパスがあります。これらの設定を 1 つの vsprops ファイルに入れることは可能ですか? それとも、プラットフォームごとに異なる vsprops ファイルを作成し、ビジュアル スタジオでプロパティ マネージャーを使用して、正しいファイルが参照されるようにする必要がありますか?
c++ - 継承されたインクルードの順序をvspropsプロパティシートでどのように制御できますか?
相互に継承するvspropsシートを使用しています。私の基本プロパティシートは、いくつかのインクルードパスを定義しています。それを継承する2番目のvspropsファイルに、さらにいくつかのインクルードパスを追加したいと思います。
ただし、追加のインクルードパスがベースインクルードパスの前に来るか後に来るかを選択できるようにしたいと思います。これを行うために使用できる$(Inherits)変数のようなものを見たことがあると思いますが、それが何であったかを思い出せないか、もう一度見つけることができません。
どんな助けでもいただければ幸いです。
visual-studio - vsprops の CharacterType/ConfigurationType
コードをビルドするために Visual Studio のプロパティ シートを使用してきましたが、vcproj ファイルではなく、ビルド設定を制御するシートの便利な階層があります。これは、1つのことを除いて素晴らしいです。CharacterType や ConfigurationType などの Project Defaults セクションでプロパティを設定できないようです。
vsprops で VCConfiguration ツールを使用してみましたが、役に立ちませんでした:
これがどのように達成されるか教えてください。
visual-studio-2008 - VS 自動化および拡張機能を介した .vsprops (プロパティ シート) へのアクセス
Visual Studio 2008 プロジェクトで使用される .vsprops (プロパティ シート) で定義されているユーザー マクロにアクセスしようとしています。VS 自動化および拡張機能 (つまり、EnvDTE など) を使用して .vsprops ファイル内の情報にアクセスする方法に関するドキュメントが見つかりません。これが可能かどうか誰にもわかりますか?
visual-studio-2010 - 1 つのソリューションで複数の (異なる) ビルド構成を持つ複数のプロジェクト
ソリューションにも複数のプロジェクトが含まれている同じ VS プロジェクトに複数のビルド構成を含めるための正しい簡単なステップバイステップの方法は何ですか? プロジェクトのビルド構成は異なります。基本的に、Dll Debug、Dll Release、Static (library) Debug、および Static (library) Release を含むプロジェクト A、.exe をビルドする Debug & Release を含むプロジェクト B のようなものを探しています。
c++ - VSProps 設定を強制的にプロジェクト設定をオーバーライドする
Visual Studio 2008 用にすべてのプロジェクトをビルドする必要がある最適化を定義する vsprops ファイルがあります。プロジェクトのプロパティを「プロジェクトのデフォルトの親から継承」に設定すると、それが機能し、vcproj ファイルに入力されます。ただし、これは開発者が最適化を変更するプロジェクト ファイルをチェックインすることから私を保護しません。この場合、プロジェクト設定は vsprops 設定よりも優先して使用されます。vsprops が常に vcproj ファイルの内容よりも優先されるようにする必要があります。これは可能ですか?他の回避策も歓迎します。
visual-c++ - MSVCリンカーはvspropsファイルを介してRandomizedBaseAddressを適用しません
vspropsファイルを使用してプロジェクトにASLRを追加しようとしています。適用されているファイルに他の設定があるため、ファイルがプロジェクトで使用されていることを確認しました。ファイルを意図的に破損すると、MSVCでプロジェクトを開くときにエラーが発生します。ASLRをに設定すると、下yes
に表示されます。RandomizedBaseAddress="2"
<Tool Name=VCLinkerTool
しかし...効果はありません。私も置くことができRandomizedBaseAddress="xxxxx"
、それは気にしません。リンカの設定が取得されていないかのようです。GenerateDebugInformation="True"
また、他のvspropsファイルが使用しているのを見た別の設定を試しましたが、それも無視されます。これは、リンカがvspropsファイルまたはその中のこれらの設定を無視しているようです。
何が得られますか?誰かがこれを見たことがありますか?