Mai*_*ixy 4 c++ msbuild rc visual-studio-2010 c-preprocessor
我目前正在尝试使用#ifdef标签在Visual C++ .rc文件中切换几个不同的默认图标.
切换#define值的构建是使用MSBuild通过命令行创建的.
我遇到的困难是使用Visual Studio 2010,为了将预处理器定义传递给资源编译器,您必须在项目设置中定义它(Config Properties - > Resources - > General).
这使得使用#ifdef标记变得困难,因为使用此方法始终会在资源编译器中定义它.
我希望将它定义为一个值,以便我可能使用预处理器#if SOMEVALUE == 4可能会工作,但似乎无法找到通过命令行将预处理器定义+值传递给MSBuild的方法.
有没有人知道将预处理器定义直接传递给资源编译器的方法,或者通过命令行为msbuild定义预处理器定义的值的方法?
是的,这可以做到.
尝试使用环境变量将值传递到构建过程中.
在项目属性中,将$(CMDLINE_DEFINES)添加到资源预处理器定义的末尾.(务必选择正确的配置.)
然后当您从命令行类型使用MSBuild(或添加到批处理文件)时...
C:\Projects\SomeProject> set CMDLINE_DEFINES=SOMETEST=42
C:\Projects\SomeProject> MSBuild SomeProject.vcproj
Run Code Online (Sandbox Code Playgroud)
批处理文件可能如下所示:
@echo off
SET CMDLINE_DEFINES=%1
MSBUILD SomeProject.vcproj
Run Code Online (Sandbox Code Playgroud)
使用此批处理文件,无论您在命令行上传递什么,都将作为预处理器宏传递给构建过程.
我遇到的困难是,使用 Visual Studio 2010,为了将预处理器定义传递给资源编译器,您必须在项目设置中定义它(配置属性 -> 资源 -> 常规)。
你得到了最困难的部分。只需输入定义即可TESTAPPLE=15,它将#define TESTAPPLE 15对整个项目有效。
| 归档时间: |
|
| 查看次数: |
9777 次 |
| 最近记录: |