vs10 C ++ $(MyLibrary)vs%(MyLibrary)

时间:2014-05-19 04:31:09

标签: c++ visual-studio-2010 resources project-files

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

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

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

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

1 个答案:

答案 0 :(得分:1)

您使用%(item)来引用MSBuild元数据项。如果您还有一个具有该名称的环境变量,则使用$(AdditionalIncludeDirectories)将无法正常工作。因此,%(MyLib)/path应解决为/path

您可以将echo %(MyLib)/path放入预建事件中进行验证。

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

因此请改用"$(MyLib)\path",包括双引号,以便在MyLib包含嵌入空格时不要混淆它。并且赞成使用项目属性表,所以有些人甚至可以弄清楚如何在2年多后正确构建项目。