gpt4 book ai didi

c++ - 我可以通过命令行将预处理器定义传递给资源编译器吗?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:31:44 24 4
gpt4 key购买 nike

我目前正在尝试使用 #ifdef 标记在 Visual C++ .rc 文件中的几个不同的默认图标之间切换。

正在使用 MSBuild 通过命令行创建切换 #define 值的构建。

我遇到的困难是使用 Visual Studio 2010,为了将预处理器定义传递给资源编译器,您必须在项目设置中定义它(配置属性 -> 资源 -> 常规)。

这使得使用#ifdef 标记变得困难,因为使用这种方法它将始终在资源编译器中定义。

我很想将它定义为一个值,这样我就可以使用预处理器 #if SOMEVALUE == 4 可能会起作用,但似乎无法找到一种方法来传递预处理器定义 + 值通过命令行到 MSBuild。

有谁知道将预处理器定义直接传递给资源编译器的方法,或通过 msbuild 命令行为预处理器定义定义值的方法吗?

最佳答案

是的,这是可以做到的。

尝试使用环境变量将值传递到您的构建过程中。

在您的项目属性中,将 ;$(CMDLINE_DEFINES) 添加到资源预处理器定义的末尾。 (一定要选择正确的配置。)

然后,当您从命令行类型(或添加到批处理文件)使用 MSBuild 时...

C:\Projects\SomeProject> set CMDLINE_DEFINES=SOMETEST=42
C:\Projects\SomeProject> MSBuild SomeProject.vcproj

批处理文件可能如下所示:

@echo off
SET CMDLINE_DEFINES=%1
MSBUILD SomeProject.vcproj

使用这个批处理文件,无论您在命令行上传递什么,都将作为预处理器宏传递到构建过程。

关于c++ - 我可以通过命令行将预处理器定义传递给资源编译器吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7149572/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com