宏为构建命令和属性在Visual Studio 11

问题描述:

三部分的问题第一:宏为构建命令和属性在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的所有宏相关功能?

如果您还没有想出如何做到这一点,您需要使用自己的属性表。

制作一个新的属性表,并使用通用属性>用户宏中的部分。

例如,我有一个名为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。

我的Microsoft.Cpp.x64.user.props,我认为是你编辑的,位于%blah%\ AppData \ Local \ Microsoft \ MSBuild \ v4.0中。我的猜测是,VS11不使用这个版本设置。你真正应该做的是创建自己的property sheet用于你的项目。