Visual Studio 2010:使用宏定义指定输出可执行文件

3
我需要使用一个在头文件中定义的#define宏来指定输出文件。
为了满足我的需求,我有一个header.hpp文件,其中包含#define VERSION 12条目,并希望输出myProgram_12.exe。是否有一种方法在不手动更改项目属性的情况下在Visual Studio 2010中实现这一点。

3
不要这样做,反过来:在构建系统中设置属性,并在需要时使用该属性。 - stijn
2个回答

2
如果版本号的权威信息来源于 #define,那么恐怕没有简单的解决方案,但可以通过一个相对丑陋的解决方法来解决。
您可以创建一个工具,从头文件中提取版本号并将其写入 Visual Studio 属性表 (.vsprops) 文件中,该文件将包含在项目中 (在Property Manager中)。该工具实际上可以是一个 C++ 程序,它会 #include 头文件 (或者至少启动这样一个程序来获取版本号)。
当然,该工具应该缓存该值,并仅在有所不同时重新编写属性表,以便在将工具连接到构建链时不会出现不断重建的情况。

+1 没有办法在不手动解析的情况下将文件内容传递到构建系统中,因此事情变得很丑陋。 - stijn

1
我建议您使用以下代码,在您的.h文件中:
#define VERSION2

在你的 .cpp 文件中。
' add reference to Microsoft.VisualStudio.VCProjectEngine
Imports EnvDTE
Imports Microsoft.VisualStudio.VCProjectEngine

Public Module Module1
    Sub Test()
        Dim prj As VCProject
        Dim cfgs, tools As IVCCollection
        Dim cfg As VCConfiguration
        Dim tool As VCLinkerTool
        prj = DTE.Solution.Projects.Item(1).Object
        cfgs = prj.Configurations
        cfg = cfgs.Item(1)
        tool = cfg.Tools("VCLinkerTool")
       #ifdef VERSION2
        tool.OutputFile = "$(ProjectName).exe"
        #ifdef VERSION3
        tool.OutputFile = "$(ProjectName1).exe"
    End Sub
End Module

这是VB代码,但你可以使用此链接如何为项目模型可扩展性编译示例代码轻松将其转换为VC++代码。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接