11

たとえば、「MyConfig」という構成のVisual Studioプロジェクトがあり、コンパイルシンボルがMY_CONFIG_SYMBOL定義されているとします。

MY_CONFIG_SYMBOLビルド前/ビルド後のイベントで定義されているかどうかを確認するためのマクロまたはコマンドはありますか?のようなもの#if MY_CONFIG_SYMBOLですが、ビルドイベント用ですか?

4

3 に答える 3

11

私はついに答えを見つけました。以下は完全に機能します。

if "$(DefineConstants.Contains('DEBUG'))" == "True" <command>

これは、ビルドで定義されたすべての定数で機能しますが、定数では大文字と小文字が区別されることに注意してください('DEBUG'!='Debug')。

于 2016-03-16T16:21:02.520 に答える
0

ビルドタイプ(デバッグまたはリリース)に基づく条件付きビルドを意味する場合は、はい。これらのスレッドをチェックしてください:

VisualStudio2008での条件付きビルド後イベント

デバッグビルド専用のVisualStudioビルド後イベントを実行する方法

于 2012-08-30T21:15:51.447 に答える
0

まあ、これは解決策ではなく、いくつかの実験を共有することによって状態を前進させようとしているだけです。(条件付きコンパイルシンボルをテストする方法はまだ見つかりません。)

これは、デバッグのオンとオフの切り替えを統合する方法です。

<#@ include file="debug.incl" #>`

some text1
<# if ( xdebug ) { #>
    foo = bas;
<# } #>
more text

debug.inclに含まれる場所:

<# 
bool xdebug = true;
#>

最初のファイルの条件付き(if)はxdebugの値を確認できるため、debug.inclの設定に基づいて出力が変更されxdebugます。

ただし、残念ながら、debug.inclが明らかに含まれているにもかかわらず、debug.inclを変更しても出力ファイルは再構築されません。そして、クリーン&リビルドでさえ生成をトリガーしないように見えるので、そのためにいくつかの別個のビルド構造が必要です...

(debug.inclの代わりにdebug.ttを試してみましたが、使用できませんでした。debug.csがdebug.ttによって作成されないように、.inclに切り替えてください。)


これは、条件付きコンパイルシンボルが表示されないため、うまく機能しませんでしたが、実際にはテンプレートのデバッグ属性がオンになります。

<#
#if DEBUG 
bool xdebug = true;
#else
bool xdebug = false;
#endif
#>

some text1
<# if ( xdebug ) { #>
    foo = bas;
<# } #>
more text

<#@ template debug="true" #>対を使用すると<# template debug=false #>、それぞれ条件付き出力を取得するかどうかを決定します。

于 2012-10-04T19:05:13.420 に答える