2010-10-20 122 views
16

當我選擇「調試」配置時,DEBUG常量處於活動狀態。當我選擇「釋放」配置時,DEBUG常量不活動。如何基於「配置管理器」創建自己定義的常量?

如何創建自己的配置,使其包含我自己定義的常量。基本上,我希望如此,如果我選擇配置「FOOBAR」,在我的項目中有一個常量FOOBAR活動。

我基本上試圖避免在我的項目中放入一堆#define FOO,然後在需要/不需要它們時評論/取消註釋。

回答

17

根據this article,您可以在項目屬性的構建選項卡中定義編譯常量。

enter image description here

編輯:要定義構建配置,你可以去構建>配置經理,我想你可以定義編譯常量有太多。

+0

好的。一個問題,但是,你如何定義多個常量?基本上,分隔符是什麼? – 2010-10-20 18:59:57

+1

@myermian:我會嘗試分號';' – 2010-10-20 19:03:15

+2

分隔符是',',而不是';'。所以你需要輸入'FOO,BAR'來設置'FOO'和'BAR'常量。 – broslav 2014-10-31 09:58:44

0

下面我總結了如何創建新構建配置(比如TEST_BUILD比調試/發佈等構建以及如何構建新的配置下定義條件編譯

轉到生成 - >配置管理器 - >選擇「新建」 - >輸入TEST_BUILD ,然後從 - >清空 - >按下OK鍵選擇複製設置。

  • 在這裏,您必須爲解決方案文件下的每個項目手動配置所有新設置。
  • 另外,除了TEST_BUILD特定的構建設置,您還可以將調試或發佈構建設置複製到新的TEST_BUILD。

    第1步:將現有設置複製到您的新版本配置:
    複製設置從 - > - >按確定。 [或]
    從 - > - >複製設置按OK。

    步驟2:定義一個宏:

    轉到屬性 - >配置屬性 - > C/C++ - >預處理器 - >預處理定義 - >定義/添加TEST_BUILD

    步驟3:啓用/禁用使用宏的代碼的一部分TEST_BUILD

1

這是一個非常古老的問題,但這裏是你如何做VS2013。

在項目屬性中添加一個常量並不是適合我。

enter image description here

什麼工作是打開的。爲您的項目添加csproj文件,找到您的配置名稱,並將其添加到「DefineConstants」部分。

<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'BO4_Production|AnyCPU'"> 
    <OutputPath>bin\BO4_Production\</OutputPath> 
    <DefineConstants>TRACE;BUSINESS_OBJECTS_4</DefineConstants> 
    <Optimize>true</Optimize> 
    <DebugType>pdbonly</DebugType> 
    <PlatformTarget>AnyCPU</PlatformTarget> 
    <ErrorReport>prompt</ErrorReport> 
    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet> 
    <Prefer32Bit>false</Prefer32Bit> 
    </PropertyGroup> 

在這個例子中,每當我在VS2013,我改變我的配置爲「BO4_Production」,源代碼將立即反映,任何部分將反映這一點:

#if BUSINESS_OBJECTS_4 
    // This is the URL of the Business Objects 4 REST services 
    string BaseURL = "http://BO3Server:6405/biprws/logon/long");  
#else 
    // This is the URL of the Business Objects 3 web services 
    string BaseURL = "http://BO3Server:8080/dswsbobje/services/Session"; 
#endif 

這是奇怪的是,這似乎是通過改變配置來實現#define的唯一方法。

幾個月後...

事實上,報廢這一點。即使在VS2015中,我也可以在的「Build」選項卡或直接在.csproj文件中添加我的條件符號,但我的解決方案中的一些項目只是得到它錯誤。例如,他們有我的符號定義,當該配置,它不應該被定義。 (我檢查了配置管理器窗口,它的設置都是正確的,但是VS2015有時候並不正確。)

+0

難道這只是因爲修改配置不會強制文件重新編譯,你會發現自己的符號在某些文件中定義但不是其他人? – Lolo 2018-02-21 19:09:18

相關問題