【发布时间】:2015-05-26 21:11:58
【问题描述】:
简而言之,传递给 CL 的命令行与项目属性不匹配,我在命令行上没有覆盖。
我正在尝试编译一个 DX11 项目,并为所有项目和配置设置包含路径:
$(IncludePath);$(DXSDK_DIR)Include
但是,DXUT11Lib 项目无法编译。如果我查看命令行输出,传递给命令行的唯一包含是:
cl /c /IC:\Users\Dave\Source\SVN\DXFireworks\DXUT11Lib\DXUT11Lib\Core [...other options]
“Core”文件夹不在配置对话框的选项中,配置对话框中的选项也不存在(DXSDK 是显而易见的选项)。
为什么属性对话框包含路径没有进入命令行?我可以确定我正在查看相同的配置(Win32,All)。
事实上,如果我将 VC++ 包含目录设置为“BANANA”,命令行仍然是:
cl /c /IC:\Users\Dave\Source\SVN\DXFireworks\DXUT11Lib\DXUT11Lib\Core /ZI
/nologo- /W3 /WX- /Od /Oy- /D WIN32 /D _DEBUG /D _UNICODE /D UNICODE /Gm
/EHsc /RTC1 /MDd /GS /fp:precise /Zc:wchar_t /Zc:forScope /Yc"dxut.h"
/Fp"C:\Users\Dave\Source\SVN\DXFireworks\Debug\dxut11lib.pch" /Fo"Debug\\"
/Fd"C:\Users\Dave\Source\SVN\DXFireworks\Debug\dxut11lib.pdb" /Gd /TP
/showIncludes /analyze- /errorReport:prompt Core\DXUT.cpp
“香蕉”这个词永远不会出现!我已经清理,删除了 sdf 文件,完全没有想法。
此外,如果我转到“命令行”属性页,我会看到“预测”命令行如下,这与我在抑制启动横幅时看到的不匹配:
/Yu"stdafx.h" /GS /analyze- /W3 /Zc:wchar_t
/I"C:\Users\Dave\Source\SVN\DXFireworks\DXUT11Lib\DXUT11Lib\Core"
/I"E:\SDK\DX9SDK\Include\Include" /Zi /Gm- /O2
/Fd"C:\Users\Dave\Source\SVN\DXFireworks\Release\dxut11lib.pdb" /fp:precise
/D "WIN32" /D "NDEBUG" /D "_UNICODE" /D "UNICODE" /errorReport:prompt /WX-
/Zc:forScope /Gd /Oy- /MD /Fa"Release\" /EHsc /nologo /Fo"Release\"
/Fp"Release\DXUT11Lib.pch"
【问题讨论】:
-
请注意,最新版本的 DXUT11 位于 CodePlex & GitHub,并且完全不需要旧版 DirectX SDK 即可构建。如果您的项目仅使用 Direct3D 11,我强烈建议您迁移到此版本并删除所有已弃用的 D3DX11 库(请参阅Living without D3DX)。
标签: visual-studio-2012 include directx include-path