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

时间:2013-06-24 07:26:44

标签: c++ visual-studio-2010 build compilation

我需要使用头文件中定义的#define宏来在输出文件的规范中使用。

要指定我需要的内容,请使用带有#define VERSION 12条目的header.hpp文件,并希望输出myProgram_12.exe。有没有办法在Visual Studio 2010中实现这一点,而无需手动更改项目属性。

2 个答案:

答案 0 :(得分:2)

如果关于版本号的权威信息来源是#define,那么我担心没有简单的解决方案,但可以通过丑陋的解决方法来完成。

您可以创建一个工具,从标题中提取版本号并将其写入Visual Studio属性表(.vsprops)文件,该文件将包含在您的项目中(在Property Manager中) )。该工具实际上可以是一个C ++程序,#include标题(或者至少启动这样的程序来获取数字)。

当然,该工具应该缓存该值,并且只在不同时重新编写属性表,这样当您将工具挂钩到构建链中时,就不会进行持续的重建。

答案 1 :(得分: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代码,但您可以使用此链接How to: Compile Example Code for Project Model Extensibility

轻松将其转换为VC ++代码