Visual Studio 中的 C++ 项目中是否有可用于识别当前 SOLUTION 配置的宏?

Is there a macro that can be used in a C++ project in Visual Studio to identify the current SOLUTION configuration?

我有一个 VS2008 解决方案,其中有一个 C++ 项目(为清楚起见,我们将其命名为 Project1)。该项目的目的是测试由同一解决方案中的另一个 C++ 项目 (Project2) 编译生成的可执行文件。正在测试的可执行文件 (Project2.exe) 与我们的 Project1 (Project1.exe) 生成的可执行文件位于同一文件夹中。这是构建文件夹中的内容:

Build_path/Debug

Build_path/Release

项目 Project1 在配置管理器中设置为始终在调试中构建(即使解决方案在发布中构建),因为其中一个第三方存在问题我们在发布时编译时在 Project1 中使用的工具。因此,任何可以识别 Project1 的配置的预处理器定义都将始终设置为调试。知道这一点以及当解决方案配置设置为在发布中构建时 Project2 在发布中构建的事实,project1 如何在发布中构建解决方案时找到 project2,因为它总是在它所在的同一文件夹中搜索?

约束:

我正在使用 GetModuleFileName 获取 Project1 的可执行文件并从那个位置(它总是在调试文件夹中),我找到的唯一解决方案是搜索代表当前解决方案配置的宏,它将通过在我的路径中添加 ../Release 来帮助我在发布中构建我的解决方案时在发布文件夹中获取 Project2.exe (但 Project1 仍在调试中)并在 Project2 实际上位于调试文件夹中时留在调试文件夹中(当解决方案在调试中构建时)通过在我的路径中添加 ../Debug

一些伪代码如下所示:

If SOLUTION_CONFIGURATION == DEBUG // Project 1 and Project2 is in debug folder 
  add ../Debug in my research path to locate Project2_Debug.exe from Project1_Debug.exe's location
Else if SOLUTION_CONFIGURATION == RELEASE // Project1 is in debug and Project2 is in release folder
  add ../Release in my research path to locate Project2.exe from Project1_Debug.exe's location
End if

没有标准宏来表示配置和版本信息。

但是,MS 为 Visual Studio 维护了一个 predefined macros 的列表。

有些可能适用于其他编译器。

P.S。我通过使用关键字 "Visual Studio predefined macros".

搜索互联网找到了该站点