在 Visual C++ 中根据文件内容设置预处理器定义

问题描述 投票:0回答:3

我的项目中有一个文件,其中包含项目版本号。我必须将此文件的内容用作我的代码中的预处理器定义。

我需要的是以某种方式将文件中的值作为 /D 参数传递给编译器。

我尝试添加预处理器定义

VERSION=$(Version)

并在预构建步骤中设置版本环境变量,但我没有找到执行后者的方法,所以我陷入了困境。

c++ visual-studio visual-c++ c-preprocessor
3个回答
3
投票

作为解决方法,可以创建一个预构建步骤,该步骤调用读取文件并在标头中生成宏定义的脚本。然后这个头文件就可以包含在我的项目中。

但是我觉得这个解决方案不太好,我希望有更好的解决方案。


3
投票

作为生成 .h 文件的替代方法,您还可以生成 .vsprops(属性表)文件。 .vsprops 文件与 .vcproj 文件的关系就如同 .h 文件与 .cpp 文件的关系一样。特别是,您可以在属性表中定义

/D
命令行选项。这就是
/D UNICODE
通常通过默认属性表定义的方式。

额外的好处是您还可以为链接器设置

/VERSION
标志,这是通过头文件无法做到的。


0
投票

您可以使用 View > Property Manager > Add New Project Property Sheet 选项将新的

.props
文件添加到您的解决方案中,该文件将包含版本定义:

Property Pages > 用户宏

VER_MAJOR
VER_MINOR
VER_PATCH
宏可以这样设置:

Add User Macro VER_MAJOR

VER_STRING
宏应该像这样设置,以便它在您的构建环境中可用:

Add User Macro VER_STRING

请记住,默认情况下,

.props
文件既不会添加到源代码管理中,也不会成为解决方案的一部分。

© www.soinside.com 2019 - 2024. All rights reserved.