我有一个VS2008解决方案,其中有一个C ++项目(为了清楚起见,我们将其命名为Project1)。该项目的目的是在同一解决方案中测试由另一个C ++项目(Project2)的编译生成的可执行文件。正在测试的可执行文件(Project2.exe)与我们的Project1(Project1.exe)生成的可执行文件位于同一文件夹中。这是构建文件夹中的内容:
Build_path /调试
Build_path /释放
项目Project1在Configuration Manager中设置为始终在调试中构建(即使在发布时构建解决方案),因为Project1中使用的第三方工具之一存在问题我们在发布中编译。因此,任何识别Project1配置的预处理器定义都将始终设置为debug。当解决方案配置设置为在发行版中构建时,了解这一点以及Project2在发布版本中构建的事实,在发布中构建解决方案时project1如何找到project2,因为它始终在其所在的同一文件夹中搜索
约束(S):
$(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
答案 0 :(得分:1)
没有用于表示配置和版本信息的 standardard 宏。
但是,MS维护Visual Studio的predefined macros列表。
有些可能与其他编译器一起提供。
P.S。我通过使用关键字&#34; Visual Studio预定义宏&#34;。
搜索互联网找到了该网站