问题分为三部分:
请注意,我指的是构建时宏,例如$(ProjectDir),而不是用来记录一系列按键的IDE宏--它们是把那些拿走了,但是没有它们,我可以生存。我一直在通过Visual 10中的属性页定义自己的构建时宏。例如,我可能会创建一个宏来定义Boost在我的本地计算机$(BoostDir) in x64 builds上通过View>Property 安装的位置。

我使用此功能是因为我可能(例如)在不同计算机上的不同位置安装了Boost。这些属性是特定于机器的,没有签入到源代码管理。然后,我可以在签入到源代码管理的项目设置中使用这些宏,只要我已经为该机器定义了宏,它就应该在编译该项目的每台机器上工作。

在试图在VisualStudio11DeveloperPreview中编译和运行我的VS10项目时,我将讨论与这些宏有关的几个问题。
首先,在VS11中似乎没有一个接口来定义这些用户定义的宏.在VS10中,现在VS11中什么也没有:

看起来这些宏确实存在于Compiler/IDE中的某个级别,因为我能够编译我的项目而没有错误,如果这些宏不在某个地方,我就无法编译。
第二,虽然宏在构建过程中似乎存在,但在调试会话中它们似乎不存在。我以前用于解析VS10中某些DLL的目录的宏现在不解析VS11中的那些目录,我得到了运行时错误:

DLL所在的目录在VS10和VS11中定义:

在调试会话期间,...but我的宏似乎没有任何意义。
如何才能在VS10中获得VS11中所依赖的所有宏相关功能?
发布于 2012-05-20 18:34:02
如果您还没有弄清楚如何做到这一点,则需要使用您自己的属性表。
创建一个新的属性表,并在“公共属性”>“用户宏”中使用该部分。
例如,我在一个名为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+click多重选择。
HTH。
发布于 2012-03-01 17:23:45
我的Microsoft.Cpp.x64.user.props (我认为是您编辑的)位于我的%blah%\AppData\Local\Microsoft\MSBuild\v4.0中。我的猜测是,VS11不使用这个来进行构建设置。您真正应该做的是创建您自己的财产表以用于您的项目。
https://stackoverflow.com/questions/7612584
复制相似问题