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

时间:2015-08-20 19:27:26

标签: c++ visual-studio macros

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

Build_path /调试

  • Project1_Debug.exe
  • Project2_Debug.exe

Build_path /释放

  • PROJECT1.EXE
  • Project2.exe

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

约束(S):

  • 我无法更改构建文件夹结构
  • 如前所述,使用Project1的预处理程序定义和$(Configuration)之类的宏在这里不会有帮助,因为$(Configuration)将绑定到Project1的配置并且< strong>将始终设置为调试。

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

1 个答案:

答案 0 :(得分:1)

没有用于表示配置和版本信息的 standardard 宏。

但是,MS维护Visual Studio的predefined macros列表。

有些可能与其他编译器一起提供。

P.S。我通过使用关键字&#34; Visual Studio预定义宏&#34;。

搜索互联网找到了该网站