3

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

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

4

2 回答 2

2

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

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

当然,该工具可能应该缓存该值,并且仅在它不同时才重新写入属性表,这样当您将该工具挂接到您的构建链中时,您就不会得到不断的重建。

于 2013-06-24T07:48:23.630 回答
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++ 代码How to: Compile Example Code for Project Model Extensibility

于 2013-06-24T08:17:36.840 回答