c++ - 在 Visual Studio 的 C++ 项目中是否可以使用宏来识别当前的 SOLUTION 配置?

标签 c++ visual-studio macros

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

构建路径/调试

  • Project1_Debug.exe
  • Project2_Debug.exe

构建路径/发布

  • Project1.exe
  • Project2.exe

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

约束:

  • 我无法更改构建文件夹结构
  • 如前所述,使用 Project1 的预处理器定义和宏,例如 $(Configuration)在这里无济于事,因为$(Configuration)将绑定(bind)到 Project1 的配置,并且将始终设置为调试

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

一些伪代码看起来像这样:

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 维护了一个列表 predefined macros对于 Visual Studio。

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

附言我通过使用关键字“Visual Studio 预定义宏”搜索互联网找到了该站点。

关于c++ - 在 Visual Studio 的 C++ 项目中是否可以使用宏来识别当前的 SOLUTION 配置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32126740/

相关文章:

c++ - 如何从 Visual Studio 调试器执行所有进程内存的高级搜索?

包含静态变量作为条件的 C 宏

c++ - 从 C 代码库在 C++ 中对 unsigned char * 上的 strchr 进行微创更改?

c++ - Qt 对象管理与 Qt 插件

c++ - DLL 加载库 - 错误代码 126

c++ - 如何在C++中使用FindWindow在Unicode中进行搜索

visual-studio - MonoDevelop F# 类型和函数签名的工具提示;它们存在吗?

c# - 使用不工作的 Visual Studio 2019 自动导入

c++ - #ifdef VALUE 与 #if Defined (VALUE) 之间有什么区别

c++ - C++中的宏可以定义宏吗?