我需要使用头文件中定义的#define宏来在输出文件的规范中使用。
要指定我需要的内容,请使用带有#define VERSION 12条目的header.hpp文件,并希望输出myProgram_12.exe。有没有办法在Visual Studio 2010中实现这一点,而无需手动更改项目属性。
答案 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 ++代码