2011-09-30 31 views
5

三部分的問題第一:宏爲構建命令和屬性在Visual Studio 11

  1. 是在Visual Studio 11完全充實構建時宏?
  2. 如何編輯&在IDE中定義它們?
  3. 在調試會話期間,我如何讓宏仍然有其含義?

請注意,我指的是build-time macros$(ProjectDir),不用於記錄一系列按鍵的IDE宏 - 他們took those away,但我生活中可以沒有他們。例如,我可能會創建一個宏來定義在我的本地計算機上安裝Boost的位置,其名稱爲$(BoostDir),位於x64版本中,通過查看>屬性管理器> Microsoft.Cpp.x64.user

macro definitions in VS10

我用這個功能,因爲我有可能(例如)安裝在不同的計算機上不同位置的推動作用。這些屬性是特定於計算機的,並未檢入到源代碼管理。然後,我可以在項目設置中使用這些宏來檢查源代碼控制,只要我爲該機器定義了宏,就可以在我編譯此項目的每臺機器上運行。

enter image description here

在試圖編譯&運行我VS10項目在Visual Studio 11開發者預覽版,我一對夫婦的問題,對於這些宏運行英寸

首先,在VS11中似乎沒有界面來定義這些用戶定義的宏。將它們在VS10,現在只是沒有在VS11:

enter image description here

看來,做在一定程度上的編譯器/ IDE中存在這些宏,因爲我能夠編譯我的項目沒有錯誤,如果這些宏不存在的話,我將無法做到這一點。

其次,雖然宏在構建過程中似乎存在,但它們在調試會話期間似乎不存在。宏我用來解決某些地方在DLL中存在VS10現在不解決VS11這些目錄的目錄,我得到運行時錯誤:

enter image description here

,其中該DLL位於這裏定義的目錄在VS10和VS11:

enter image description here

...但我的宏似乎並不意味着在調試會話期間任何事情。

如何獲得我在VS10中依賴於VS11的所有宏相關功能?

回答

1

如果您還沒有想出如何做到這一點,您需要使用自己的屬性表。

製作一個新的屬性表,並使用通用屬性>用戶宏中的部分。

例如,我有一個名爲BOOST_VER宏屬性表稱爲IncludeBoost.props我設置的一切。

User Macros 
Name  Value 
BOOST_VER 1.49.0 

C/C++ > General > Additional Include Directories > 
"$(environment variable)\3rdParty\Boost_$(BOOST_VER)\Boost";%(AdditionalIncludeDirectories) 

C/C++ > Preprocessor > Preprocessor Definitions > 
BOOST_ALL_DYN_LINK;%(PreprocessorDefinitions) 

Linker > General 
$(env var)\3rdParty\Boost_$(BOOST_VER)\Boost\lib\$(Platform);%(AdditionalLibraryDirectories) 

注意適當的平臺挑選過的(Win32或x64)。

順便說一句,物業經理支持Ctrl +單擊多個選擇。

HTH。

0

我的Microsoft.Cpp.x64.user.props,我認爲是你編輯的,位於%blah%\ AppData \ Local \ Microsoft \ MSBuild \ v4.0中。我的猜測是,VS11不使用這個版本設置。你真正應該做的是創建自己的property sheet用於你的項目。

相關問題