C++ Visual Studio 11中用于生成命令和属性的宏
第一个问题由三部分组成:C++ Visual Studio 11中用于生成命令和属性的宏,c++,visual-studio-2012,C++,Visual Studio 2012,第一个问题由三部分组成: 构建时宏在VisualStudio11中是否完全充实 如何在IDE中编辑和定义它们 如何让宏在调试会话期间仍具有其意义 请注意,我指的是诸如$(ProjectDir),而不是用来记录一系列击键的IDE宏——它们,但我可以不使用它们。我一直在通过VisualStudio10中的属性页定义自己的构建时宏。例如,我可以创建一个宏,通过视图>属性管理器>Microsoft.Cpp.x64在x64版本中定义名为$(BoostDir)的本地计算机上安装Boost的位置。用户: 我
$(ProjectDir)
,而不是用来记录一系列击键的IDE宏——它们,但我可以不使用它们。我一直在通过VisualStudio10中的属性页定义自己的构建时宏。例如,我可以创建一个宏,通过视图>属性管理器>Microsoft.Cpp.x64在x64版本中定义名为$(BoostDir)
的本地计算机上安装Boost的位置。用户:
我使用这个功能是因为我可能(例如)在不同的计算机上的不同位置安装了Boost。这些属性是特定于计算机的,并且未签入到源代码管理。然后,我可以在项目设置中使用这些宏,这些宏被签入到源代码管理中,只要我已经为该机器定义了宏,它就应该可以在我编译该项目的每台机器上工作
在试图在VisualStudio11开发者预览版中编译和运行我的VS10项目时,我遇到了与这些宏有关的几个问题
首先,在VS11中,似乎没有定义这些用户定义宏的接口。他们在VS10中的位置,现在在VS11中什么都没有:
看起来这些宏确实存在于编译器/IDE中的某个级别,因为我能够编译我的项目而不出错,如果这些宏不存在于某个地方,我就无法做到这一点
第二,虽然宏似乎在构建过程中存在,但在调试会话期间它们似乎不存在。我用来解析VS10中存在某些DLL的目录的宏现在无法解析VS11中的这些目录,并且我会遇到运行时错误:
此DLL所在的目录在VS10和VS11中定义:
…但在调试会话期间,我的宏似乎没有任何意义
如何将我在VS10中依赖的所有宏相关功能恢复到VS11中?我的Microsoft.Cpp.x64.user.props(我认为是您编辑的)位于我的%blah%\AppData\Local\Microsoft\MSBuild\v4.0中。我猜VS11在构建设置中不使用这个选项。您真正应该做的是创建自己的属性表,以便与项目一起使用。如果您还不知道如何做到这一点,您需要使用自己的属性表 制作一个新的属性表,并使用公共属性>用户宏中的部分 例如,我在一个名为IncludeBoost.props的属性表中有一个名为BOOST\u VER的宏,我在其中设置了所有内容
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+单击多个选择
嗯