web-dev-qa-db-ja.com

WindowsSDK_IncludePathはどこで定義されていますか?

マクロ$(WindowsSDK_IncludePath)には、図に示されている値があります。

これらの値がどこで定義されているかを知りたいのですが、いくつかのファイルで定義する必要があります。

写真はVisual Studio 2013から撮影されました。

enter image description here

15
Marson Mao

フォルダーC:\Program Files (x86)\Windows Kits\8.0\build\CommonConfiguration\Neutralのファイルsdk.propsにデータが表示されます

<PropertyGroup>
     <WindowsSdkDir Condition="'$(WindowsSdkDir)' == ''">$([MSBUILD]::GetDirectoryNameOfFileAbove('$(MSBUILDTHISFILEDIRECTORY)', 'sdkmanifest.xml'))</WindowsSdkDir>
  </PropertyGroup>

  <PropertyGroup>    <WindowsSDK_IncludePath>$(WindowsSdkDir)Include\um;$(WindowsSdkDir)Include\shared;$(WindowsSdkDir)Include\winrt;</WindowsSDK_IncludePath>
  </PropertyGroup>

Win8 + VS2012を使用しているため、VS2013 + 8.1 SDKのフォルダー8.1にある必要があります。

5
magicandre1981

私の場合、WindowsSDK_IncludePath変数は正しく定義されており、実際にはVisual Studio 2013で完全に機能しました。そのため、VS2015をアンインストールして再インストールしました。次に、 このリンク のおかげで、特定のユーザー設定によってプリセットマクロ変数を変更できることがわかりました。これらのユーザー設定はC:\Users\<user>\AppData\Local\Microsoft\MSBuild\v4.0\Microsoft.Cpp.Win32.user.propsに保存され、私の場合は次のように読みます:

<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" xmlns="http://schemas.Microsoft.com/developer/msbuild/2003">
  <ImportGroup Label="PropertySheets">
  </ImportGroup>
  <PropertyGroup Label="UserMacros" />
  <PropertyGroup>
    <IncludePath>$(VC_IncludePath);$(WindowsSDK_IncludePath);C:\Program Files (x86)\CodeSynthesis XSD 4.0\include;</IncludePath>
    <LibraryPath>$(VC_LibraryPath_x86);$(WindowsSDK_LibraryPath_x86);C:\Program Files (x86)\CodeSynthesis XSD 4.0\lib\vc-12.0;</LibraryPath>
    <ExecutablePath>C:\Program Files (x86)\CodeSynthesis XSD 4.0\bin;$(VC_ExecutablePath_x86);$(WindowsSDK_ExecutablePath);$(VS_ExecutablePath);$(MSBuild_ExecutablePath);$(SystemRoot)\SysWow64;$(FxCopDir);$(PATH);</ExecutablePath>
  </PropertyGroup>
  <ItemDefinitionGroup />
  <ItemGroup />
</Project>

どういうわけか<IncludePath>文により、VS2015は正しい値を見つけることができませんでした。すべてが正常に機能したラップトップコンピューターでは、ファイルは基本的に空でした。

<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" xmlns="http://schemas.Microsoft.com/developer/msbuild/2003">
  <ImportGroup Label="PropertySheets">
  </ImportGroup>
  <PropertyGroup Label="UserMacros" />
  <PropertyGroup>
  </PropertyGroup>
  <ItemDefinitionGroup />
  <ItemGroup />
</Project>

ラップトップのファイルと同じようにファイルを設定した後、すべてが正常に機能しました。もちろん、CodeSynthesis XSDの実行設定は失われましたが、現時点ではそれを使用するプロジェクトに取り組んでいません。このファイルのさまざまな亜種で実験を続けます。

5
malopezmx

私にとっては、フォルダーC:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140のファイルMicrosoft.Cpp.Common.propsで、ハードコードされたWindows 10 SDKバージョンを10.0.10240.0から10.0.10586.0に変更する必要がありました。

<!-- 10.0.10240.0 is the hardcoded checked-in version of uCRT that we use in case we target 8.1 SDK -->
<TargetUniversalCRTVersion Condition="'$(TargetUniversalCRTVersion)' == ''  and ('$(TargetPlatformVersion)' == '8.1' or '$(DefineWindowsSDK_71A)' == 'true')">10.0.10586.0</TargetUniversalCRTVersion>

Windows 10でVS2015を使用していますが、インクルードファイルが欠落しているため、Windows 8.1 SDKに対してコンパイルできませんでした。スタンドアロンのWindows 10 SDKをインストールしても解決しませんでした(ctype.h a.s.oのような10.0.10240のucrtファイルが含まれていないため)。

3
JeffRSon

C:\ Program Files(x86)\ Windows Kits \で* .propsを検索します

私の場合、問題の原因となっているファイルはUAP.propsでした。ファイルを編集して4.7.1から4.6.1に変更すると、問題が解決しました。

<PropertyGroup>
    <WindowsSdkDir Condition="'$(WindowsSdkDir)' == ''">$([MSBUILD]::GetDirectoryNameOfFileAbove('$(MSBUILDTHISFILEDIRECTORY)', 'sdkmanifest.xml'))\</WindowsSdkDir>
    <DotNetSdkRoot Condition="'$(DotNetSdkRoot)' == ''">$(Registry:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\NETFXSDK\4.7.1@KitsInstallationFolder)</DotNetSdkRoot>
    <DotNetSdkRoot Condition="'$(DotNetSdkRoot)' == ''">$(Registry:HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Microsoft SDKs\NETFXSDK\4.7.1@KitsInstallationFolder)</DotNetSdkRoot>
  </PropertyGroup>
1
Todd