先分三题:
- 构建时宏是否在 Visual Studio 11 中完全充实?
- 如何在 IDE 中编辑和定义它们?
- 如何让宏在调试会话期间仍然具有其意义?
请注意,我指的是构建时宏,例如$(ProjectDir)
,而不是用于记录一系列击键的 IDE 宏——它们把它们拿走了,但我可以没有它们。我一直在通过 Visual Studio 10 中的属性页定义自己的构建时宏。例如,我可能会创建一个宏来定义 Boost 在本地计算机上的安装位置,通过View>Property Manager>Microsoft.Cpp$(BoostDir)
以 x64 构建命名.x64.user:
我使用此功能是因为我可能(例如)在不同计算机上的不同位置安装了 Boost。这些属性是特定于机器的,并且未签入源代码管理。然后我可以在项目设置中使用这些宏,这些宏被签入到源代码控制中,只要我为该机器定义了宏,它就应该在我编译这个项目的每台机器上工作。
在尝试在 Visual Studio 11 开发人员预览版中编译和运行我的 VS10 项目时,我遇到了与这些宏有关的几个问题。
首先,在 VS11 中似乎没有定义这些用户定义宏的接口。他们在 VS10 中的位置,现在在 VS11 中什么都没有:
看来这些宏确实存在于编译器/IDE 中的某个级别,因为我能够无错误地编译我的项目,如果这些宏在某处不存在,我将无法做到这一点。
其次,虽然宏在构建过程中似乎存在,但在调试会话期间它们似乎不存在。我用来解析 VS10 中存在某些 DLL 的目录的宏现在不能解析 VS11 中的那些目录,并且我得到运行时错误:
这个DLL所在的目录在VS10和VS11中定义在这里:
...但我的宏在调试会话期间似乎没有任何意义。
我怎样才能将我在 VS10 中依赖的所有与宏相关的功能恢复到 VS11 中?