0

我们使用环境变量来指定我们使用的库的路径。大多数时候它指向已发布版本,但有时指向开发版本。

无论如何,当我$(MyLib)/path;%(AdditionalIncludeDirectories)用于构建 C++ 应用程序时它工作正常,但我无法打开项目资源。但是,当我使用%(MyLib)/path;%(AdditionalIncludeDirectories)它时。

现在,有什么区别?我认为正确的方法是使用$(EnvVar)但对于资源编辑器它似乎不起作用。如果$(EnvVar)是正确的方法,那么为什么 Visual Studio 使用%(AdditionalIncludeDirectories)而不是$(AdditionalIncludeDirectories)

我得到的错误是:fatal error RC1015: cannot open include file 'afxres.h'.

4

1 回答 1

1

您使用 %(item) 来引用 MSBuild 元数据项。如果您还具有该名称的环境变量,则使用 $(AdditionalIncludeDirectories) 将无法正常工作。所以%(MyLib)/path应该下决心才对/path

您可以放入echo %(MyLib)/path预构建事件来验证这一点。

这可能足以停止混淆资源编译器 rc.exe。这是一个冷冰冰的 SDK 实用程序,可以追溯到 Windows 1.0 版。它非常喜怒无常,对命令行选项和 .rc 脚本文件文本编码非常挑剔。请记住,它可以追溯到早在 Windows 开始支持正斜杠作为路径分隔符之前的一个时代,每个人都必须在 1986 年使用反斜杠。

因此,请改用"$(MyLib)\path"双引号,以免在MyLib包含嵌入空格时混淆它。并且支持使用项目属性表,因此有一些可能性,有人仍然可以在 2 年后弄清楚如何正确构建项目。

于 2014-05-19T12:08:37.800 回答