Merge topic 'vs-win10-store'

2402bb8c Help: Document Windows 10 Universal Applications in cmake-toolchains(7)
1be2f12c VS: Add support for Windows 10 Universal (Store) Applications
2798dbda VS: Refactor indentation of LinkLibraryDependencies
8c426183 MSVC: Add system libs for WindowsStore on VS 2015
d1b87d72 VS: Select Windows 10 Store SDK and toolset for VS 2015
This commit is contained in:
Brad King 2015-10-05 10:04:11 -04:00 committed by CMake Topic Stage
commit 6c25ceb6a8
17 changed files with 424 additions and 11 deletions

View File

@ -254,17 +254,22 @@ Properties on Targets
/prop_tgt/TYPE
/prop_tgt/VERSION
/prop_tgt/VISIBILITY_INLINES_HIDDEN
/prop_tgt/VS_DESKTOP_EXTENSIONS_VERSION
/prop_tgt/VS_DOTNET_REFERENCES
/prop_tgt/VS_DOTNET_TARGET_FRAMEWORK_VERSION
/prop_tgt/VS_GLOBAL_KEYWORD
/prop_tgt/VS_GLOBAL_PROJECT_TYPES
/prop_tgt/VS_GLOBAL_ROOTNAMESPACE
/prop_tgt/VS_GLOBAL_variable
/prop_tgt/VS_IOT_EXTENSIONS_VERSION
/prop_tgt/VS_IOT_STARTUP_TASK
/prop_tgt/VS_KEYWORD
/prop_tgt/VS_MOBILE_EXTENSIONS_VERSION
/prop_tgt/VS_SCC_AUXPATH
/prop_tgt/VS_SCC_LOCALPATH
/prop_tgt/VS_SCC_PROJECTNAME
/prop_tgt/VS_SCC_PROVIDER
/prop_tgt/VS_WINDOWS_TARGET_PLATFORM_MIN_VERSION
/prop_tgt/VS_WINRT_COMPONENT
/prop_tgt/VS_WINRT_EXTENSIONS
/prop_tgt/VS_WINRT_REFERENCES

View File

@ -220,6 +220,23 @@ Windows CE to use. Currently version 8.0 (Windows Embedded Compact 2013) is
supported out of the box. Other versions may require one to set
:variable:`CMAKE_GENERATOR_TOOLSET` to the correct value.
Cross Compiling for Windows 10 Universal Applications
-----------------------------------------------------
A toolchain file to configure a Visual Studio generator for a
Windows 10 Universal Application may look like this:
.. code-block:: cmake
set(CMAKE_SYSTEM_NAME WindowsStore)
set(CMAKE_SYSTEM_VERSION 10.0)
A Windows 10 Universal Application targets both Windows Store and
Windows Phone. Specify the :variable:`CMAKE_SYSTEM_VERSION` variable
to be ``10.0`` to build with the latest available Windows 10 SDK.
Specify a more specific version (e.g. ``10.0.10240.0`` for RTM)
to build with the corresponding SDK.
Cross Compiling for Windows Phone
---------------------------------

View File

@ -0,0 +1,10 @@
VS_DESKTOP_EXTENSIONS_VERSION
-----------------------------
Visual Studio Windows 10 Desktop Extensions Version
Specifies the version of the Desktop Extensions that should be included in the
target. For example ``10.0.10240.0``. If the value is not specified, the Desktop
Extensions will not be included. To use the same version of the extensions as
the Windows 10 SDK that is being used, you can use the
:variable:`CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION` variable.

View File

@ -0,0 +1,10 @@
VS_IOT_EXTENSIONS_VERSION
-------------------------
Visual Studio Windows 10 IoT Extensions Version
Specifies the version of the IoT Extensions that should be included in the
target. For example ``10.0.10240.0``. If the value is not specified, the IoT
Extensions will not be included. To use the same version of the extensions as
the Windows 10 SDK that is being used, you can use the
:variable:`CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION` variable.

View File

@ -0,0 +1,6 @@
VS_IOT_STARTUP_TASK
-------------------
Visual Studio Windows 10 IoT Continuous Background Task
Specifies that the target should be compiled as a Continuous Background Task library.

View File

@ -0,0 +1,10 @@
VS_MOBILE_EXTENSIONS_VERSION
----------------------------
Visual Studio Windows 10 Mobile Extensions Version
Specifies the version of the Mobile Extensions that should be included in the
target. For example ``10.0.10240.0``. If the value is not specified, the Mobile
Extensions will not be included. To use the same version of the extensions as
the Windows 10 SDK that is being used, you can use the
:variable:`CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION` variable.

View File

@ -0,0 +1,10 @@
VS_WINDOWS_TARGET_PLATFORM_MIN_VERSION
--------------------------------------
Visual Studio Windows Target Platform Minimum Version
For Windows 10. Specifies the minimum version of the OS that is being
targeted. For example ``10.0.10240.0``. If the value is not specified, the
value of :variable:`CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION` will be used on
WindowsStore projects otherwise the target platform minimum version will not
be specified for the project.

View File

@ -179,7 +179,9 @@ elseif(WINDOWS_PHONE OR WINDOWS_STORE)
set(_PLATFORM_DEFINES "/DWIN32")
set(_FLAGS_C " /DUNICODE /D_UNICODE")
set(_FLAGS_CXX " /DUNICODE /D_UNICODE /GR /EHsc")
if(WINDOWS_PHONE)
if(WINDOWS_STORE AND MSVC_VERSION GREATER 1899)
set(CMAKE_C_STANDARD_LIBRARIES_INIT "WindowsApp.lib")
elseif(WINDOWS_PHONE)
set(CMAKE_C_STANDARD_LIBRARIES_INIT "WindowsPhoneCore.lib RuntimeObject.lib PhoneAppModelHost.lib")
elseif(_MSVC_C_ARCHITECTURE_FAMILY STREQUAL "ARM" OR _MSVC_CXX_ARCHITECTURE_FAMILY STREQUAL "ARM")
set(CMAKE_C_STANDARD_LIBRARIES_INIT "kernel32.lib user32.lib")

View File

@ -120,6 +120,34 @@ bool cmGlobalVisualStudio14Generator::InitializeWindows(cmMakefile* mf)
return true;
}
//----------------------------------------------------------------------------
bool cmGlobalVisualStudio14Generator::InitializeWindowsStore(cmMakefile* mf)
{
std::ostringstream e;
if(!this->SelectWindowsStoreToolset(this->DefaultPlatformToolset))
{
if(this->DefaultPlatformToolset.empty())
{
e << this->GetName() << " supports Windows Store '8.0', '8.1' and "
"'10.0', but not '" << this->SystemVersion <<
"'. Check CMAKE_SYSTEM_VERSION.";
}
else
{
e << "A Windows Store component with CMake requires both the Windows "
<< "Desktop SDK as well as the Windows Store '" << this->SystemVersion
<< "' SDK. Please make sure that you have both installed";
}
mf->IssueMessage(cmake::FATAL_ERROR, e.str());
return false;
}
if (cmHasLiteralPrefix(this->SystemVersion, "10.0"))
{
return this->SelectWindows10SDK(mf);
}
return true;
}
//----------------------------------------------------------------------------
bool cmGlobalVisualStudio14Generator::SelectWindows10SDK(cmMakefile* mf)
{
@ -138,6 +166,28 @@ bool cmGlobalVisualStudio14Generator::SelectWindows10SDK(cmMakefile* mf)
return true;
}
//----------------------------------------------------------------------------
bool
cmGlobalVisualStudio14Generator::SelectWindowsStoreToolset(
std::string& toolset) const
{
if (cmHasLiteralPrefix(this->SystemVersion, "10.0"))
{
if (this->IsWindowsStoreToolsetInstalled() &&
this->IsWindowsDesktopToolsetInstalled())
{
toolset = "v140";
return true;
}
else
{
return false;
}
}
return
this->cmGlobalVisualStudio12Generator::SelectWindowsStoreToolset(toolset);
}
//----------------------------------------------------------------------------
void cmGlobalVisualStudio14Generator::WriteSLNHeader(std::ostream& fout)
{
@ -166,6 +216,19 @@ cmGlobalVisualStudio14Generator::IsWindowsDesktopToolsetInstalled() const
vc14, cmSystemTools::KeyWOW64_32);
}
//----------------------------------------------------------------------------
bool
cmGlobalVisualStudio14Generator::IsWindowsStoreToolsetInstalled() const
{
const char universal10Key[] =
"HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\"
"VisualStudio\\14.0\\Setup\\Build Tools for Windows 10;SrcPath";
std::string win10SDK;
return cmSystemTools::ReadRegistryValue(universal10Key,
win10SDK, cmSystemTools::KeyWOW64_32);
}
//----------------------------------------------------------------------------
std::string cmGlobalVisualStudio14Generator::GetWindows10SDKVersion()
{

View File

@ -31,6 +31,13 @@ public:
virtual const char* GetToolsVersion() { return "14.0"; }
protected:
virtual bool InitializeWindows(cmMakefile* mf);
virtual bool InitializeWindowsStore(cmMakefile* mf);
virtual bool SelectWindowsStoreToolset(std::string& toolset) const;
// These aren't virtual because we need to check if the selected version
// of the toolset is installed
bool IsWindowsStoreToolsetInstalled() const;
virtual const char* GetIDEVersion() { return "14.0"; }
virtual bool SelectWindows10SDK(cmMakefile* mf);

View File

@ -463,6 +463,7 @@ void cmVisualStudio10TargetGenerator::Generate()
this->WriteString("<Import Project=\"" VS10_USER_PROPS "\""
" Condition=\"exists('" VS10_USER_PROPS "')\""
" Label=\"LocalAppDataPlatform\" />\n", 2);
this->WritePlatformExtensions();
this->WriteString("</ImportGroup>\n", 1);
this->WriteString("<PropertyGroup Label=\"UserMacros\" />\n", 1);
this->WriteWinRTPackageCertificateKeyFile();
@ -475,6 +476,7 @@ void cmVisualStudio10TargetGenerator::Generate()
this->WriteXamlFilesGroup();
this->WriteWinRTReferences();
this->WriteProjectReferences();
this->WriteSDKReferences();
this->WriteString(
"<Import Project=\"$(VCTargetsPath)\\Microsoft.Cpp.targets\""
" />\n", 1);
@ -1307,6 +1309,7 @@ void cmVisualStudio10TargetGenerator::WriteExtraSource(cmSourceFile const* sf)
{
tool = "XML";
}
if(this->NsightTegra)
{
// Nsight Tegra needs specific file types to check up-to-dateness.
@ -2590,7 +2593,8 @@ cmVisualStudio10TargetGenerator::ComputeLinkOptions(std::string const& config)
// A Windows Runtime component uses internal .NET metadata,
// so does not have an import library.
if(this->Target->GetPropertyAsBool("VS_WINRT_COMPONENT"))
if(this->Target->GetPropertyAsBool("VS_WINRT_COMPONENT") &&
this->Target->GetType() != cmTarget::EXECUTABLE)
{
linkOptions.AddFlag("GenerateWindowsMetadata", "true");
}
@ -2661,7 +2665,7 @@ cmVisualStudio10TargetGenerator::WriteLinkOptions(std::string const& config)
{
this->WriteString("<ProjectReference>\n", 2);
this->WriteString(
" <LinkLibraryDependencies>false</LinkLibraryDependencies>\n", 2);
"<LinkLibraryDependencies>false</LinkLibraryDependencies>\n", 3);
this->WriteString("</ProjectReference>\n", 2);
}
}
@ -2896,6 +2900,101 @@ void cmVisualStudio10TargetGenerator::WriteProjectReferences()
this->WriteString("</ItemGroup>\n", 1);
}
void cmVisualStudio10TargetGenerator::WritePlatformExtensions()
{
// This only applies to Windows 10 apps
if (this->GlobalGenerator->TargetsWindowsStore() &&
cmHasLiteralPrefix(this->GlobalGenerator->GetSystemVersion(), "10.0"))
{
const char* desktopExtensionsVersion =
this->Target->GetProperty("VS_DESKTOP_EXTENSIONS_VERSION");
if (desktopExtensionsVersion)
{
this->WriteSinglePlatformExtension("WindowsDesktop",
desktopExtensionsVersion);
}
const char* mobileExtensionsVersion =
this->Target->GetProperty("VS_MOBILE_EXTENSIONS_VERSION");
if (mobileExtensionsVersion)
{
this->WriteSinglePlatformExtension("WindowsMobile",
mobileExtensionsVersion);
}
}
}
void cmVisualStudio10TargetGenerator::WriteSinglePlatformExtension(
std::string const& extension,
std::string const& version
)
{
this->WriteString("<Import Project=", 2);
(*this->BuildFileStream)
<< "\"$([Microsoft.Build.Utilities.ToolLocationHelper]"
<< "::GetPlatformExtensionSDKLocation(`"
<< extension <<", Version=" << version
<< "`, $(TargetPlatformIdentifier), $(TargetPlatformVersion), null, "
<< "$(ExtensionSDKDirectoryRoot), null))"
<< "\\DesignTime\\CommonConfiguration\\Neutral\\"
<< extension << ".props\" "
<< "Condition=\"exists('$("
<< "[Microsoft.Build.Utilities.ToolLocationHelper]"
<< "::GetPlatformExtensionSDKLocation(`"
<< extension << ", Version=" << version
<< "`, $(TargetPlatformIdentifier), $(TargetPlatformVersion), null, "
<< "$(ExtensionSDKDirectoryRoot), null))"
<< "\\DesignTime\\CommonConfiguration\\Neutral\\"
<< extension << ".props')\" />\n";
}
void cmVisualStudio10TargetGenerator::WriteSDKReferences()
{
// This only applies to Windows 10 apps
if (this->GlobalGenerator->TargetsWindowsStore() &&
cmHasLiteralPrefix(this->GlobalGenerator->GetSystemVersion(), "10.0"))
{
const char* desktopExtensionsVersion =
this->Target->GetProperty("VS_DESKTOP_EXTENSIONS_VERSION");
const char* mobileExtensionsVersion =
this->Target->GetProperty("VS_MOBILE_EXTENSIONS_VERSION");
const char* iotExtensionsVersion =
this->Target->GetProperty("VS_IOT_EXTENSIONS_VERSION");
if(desktopExtensionsVersion || mobileExtensionsVersion ||
iotExtensionsVersion)
{
this->WriteString("<ItemGroup>\n", 1);
if(desktopExtensionsVersion)
{
this->WriteSingleSDKReference("WindowsDesktop",
desktopExtensionsVersion);
}
if(mobileExtensionsVersion)
{
this->WriteSingleSDKReference("WindowsMobile",
mobileExtensionsVersion);
}
if(iotExtensionsVersion)
{
this->WriteSingleSDKReference("WindowsIoT",
iotExtensionsVersion);
}
this->WriteString("</ItemGroup>\n", 1);
}
}
}
void cmVisualStudio10TargetGenerator::WriteSingleSDKReference(
std::string const& extension,
std::string const& version
)
{
this->WriteString("<SDKReference Include=\"", 2);
(*this->BuildFileStream) << extension
<< ", Version=" << version << "\" />\n";
}
void cmVisualStudio10TargetGenerator::WriteWinRTPackageCertificateKeyFile()
{
if((this->GlobalGenerator->TargetsWindowsStore() ||
@ -3018,13 +3117,27 @@ void cmVisualStudio10TargetGenerator::WriteApplicationTypeSettings()
(*this->BuildFileStream) << (isWindowsPhone ?
"Windows Phone" : "Windows Store")
<< "</ApplicationType>\n";
this->WriteString("<ApplicationTypeRevision>", 2);
(*this->BuildFileStream) << cmVS10EscapeXML(v)
<< "</ApplicationTypeRevision>\n";
this->WriteString("<DefaultLanguage>en-US"
"</DefaultLanguage>\n", 2);
if(v == "8.1")
if (cmHasLiteralPrefix(v, "10.0"))
{
this->WriteString("<ApplicationTypeRevision>", 2);
(*this->BuildFileStream) << cmVS10EscapeXML("10.0")
<< "</ApplicationTypeRevision>\n";
// Visual Studio 14.0 is necessary for building 10.0 apps
this->WriteString("<MinimumVisualStudioVersion>14.0"
"</MinimumVisualStudioVersion>\n", 2);
if(this->Target->GetType() < cmTarget::UTILITY)
{
isAppContainer = true;
}
}
else if(v == "8.1")
{
this->WriteString("<ApplicationTypeRevision>", 2);
(*this->BuildFileStream) << cmVS10EscapeXML(v)
<< "</ApplicationTypeRevision>\n";
// Visual Studio 12.0 is necessary for building 8.1 apps
this->WriteString("<MinimumVisualStudioVersion>12.0"
"</MinimumVisualStudioVersion>\n", 2);
@ -3036,6 +3149,9 @@ void cmVisualStudio10TargetGenerator::WriteApplicationTypeSettings()
}
else if (v == "8.0")
{
this->WriteString("<ApplicationTypeRevision>", 2);
(*this->BuildFileStream) << cmVS10EscapeXML(v)
<< "</ApplicationTypeRevision>\n";
// Visual Studio 11.0 is necessary for building 8.0 apps
this->WriteString("<MinimumVisualStudioVersion>11.0"
"</MinimumVisualStudioVersion>\n", 2);
@ -3072,6 +3188,30 @@ void cmVisualStudio10TargetGenerator::WriteApplicationTypeSettings()
(*this->BuildFileStream) << cmVS10EscapeXML(targetPlatformVersion) <<
"</WindowsTargetPlatformVersion>\n";
}
const char* targetPlatformMinVersion =
this->Target->GetProperty("VS_WINDOWS_TARGET_PLATFORM_MIN_VERSION");
if(targetPlatformMinVersion)
{
this->WriteString("<WindowsTargetPlatformMinVersion>", 2);
(*this->BuildFileStream) << cmVS10EscapeXML(targetPlatformMinVersion) <<
"</WindowsTargetPlatformMinVersion>\n";
}
else if (isWindowsStore && cmHasLiteralPrefix(v, "10.0"))
{
// If the min version is not set, then use the TargetPlatformVersion
if (!targetPlatformVersion.empty())
{
this->WriteString("<WindowsTargetPlatformMinVersion>", 2);
(*this->BuildFileStream) << cmVS10EscapeXML(targetPlatformVersion) <<
"</WindowsTargetPlatformMinVersion>\n";
}
}
// Added IoT Startup Task support
if(this->Target->GetPropertyAsBool("VS_IOT_STARTUP_TASK"))
{
this->WriteString("<ContainsStartupTask>true</ContainsStartupTask>\n", 2);
}
}
void cmVisualStudio10TargetGenerator::VerifyNecessaryFiles()
@ -3124,7 +3264,7 @@ void cmVisualStudio10TargetGenerator::VerifyNecessaryFiles()
{
this->IsMissingFiles = true;
}
else if (v == "8.1")
else if (v == "8.1" || cmHasLiteralPrefix(v, "10.0"))
{
this->IsMissingFiles = true;
}
@ -3158,6 +3298,10 @@ void cmVisualStudio10TargetGenerator::WriteMissingFiles()
{
this->WriteMissingFilesWS81();
}
else if (cmHasLiteralPrefix(v, "10.0"))
{
this->WriteMissingFilesWS10_0();
}
}
}
@ -3419,6 +3563,64 @@ void cmVisualStudio10TargetGenerator::WriteMissingFilesWS81()
this->WriteCommonMissingFiles(manifestFile);
}
void cmVisualStudio10TargetGenerator::WriteMissingFilesWS10_0()
{
std::string manifestFile =
this->DefaultArtifactDir + "/package.appxManifest";
std::string artifactDir =
this->LocalGenerator->GetTargetDirectory(*this->Target);
this->ConvertToWindowsSlash(artifactDir);
std::string artifactDirXML = cmVS10EscapeXML(artifactDir);
std::string targetNameXML = cmVS10EscapeXML(this->Target->GetName());
cmGeneratedFileStream fout(manifestFile.c_str());
fout.SetCopyIfDifferent(true);
fout <<
"<?xml version=\"1.0\" encoding=\"utf-8\"?>\n"
"<Package\n\t"
"xmlns=\"http://schemas.microsoft.com/appx/manifest/foundation/windows10\""
"\txmlns:mp=\"http://schemas.microsoft.com/appx/2014/phone/manifest\"\n"
"\txmlns:uap=\"http://schemas.microsoft.com/appx/manifest/uap/windows10\""
"\n\tIgnorableNamespaces=\"uap mp\">\n\n"
"\t<Identity Name=\"" << this->GUID << "\" Publisher=\"CN=CMake\""
" Version=\"1.0.0.0\" />\n"
"\t<mp:PhoneIdentity PhoneProductId=\"" << this->GUID <<
"\" PhonePublisherId=\"00000000-0000-0000-0000-000000000000\"/>\n"
"\t<Properties>\n"
"\t\t<DisplayName>" << targetNameXML << "</DisplayName>\n"
"\t\t<PublisherDisplayName>CMake</PublisherDisplayName>\n"
"\t\t<Logo>" << artifactDirXML << "\\StoreLogo.png</Logo>\n"
"\t</Properties>\n"
"\t<Dependencies>\n"
"\t\t<TargetDeviceFamily Name=\"Windows.Universal\" "
"MinVersion=\"10.0.0.0\" MaxVersionTested=\"10.0.0.0\" />\n"
"\t</Dependencies>\n"
"\t<Resources>\n"
"\t\t<Resource Language=\"x-generate\" />\n"
"\t</Resources>\n"
"\t<Applications>\n"
"\t\t<Application Id=\"App\""
" Executable=\"" << targetNameXML << ".exe\""
" EntryPoint=\"" << targetNameXML << ".App\">\n"
"\t\t\t<uap:VisualElements\n"
"\t\t\t\tDisplayName=\"" << targetNameXML << "\"\n"
"\t\t\t\tDescription=\"" << targetNameXML << "\"\n"
"\t\t\t\tBackgroundColor=\"#336699\"\n"
"\t\t\t\tSquare150x150Logo=\"" << artifactDirXML << "\\Logo.png\"\n"
"\t\t\t\tSquare44x44Logo=\"" << artifactDirXML <<
"\\SmallLogo44x44.png\">\n"
"\t\t\t\t<uap:SplashScreen"
" Image=\"" << artifactDirXML << "\\SplashScreen.png\" />\n"
"\t\t\t</uap:VisualElements>\n"
"\t\t</Application>\n"
"\t</Applications>\n"
"</Package>\n";
this->WriteCommonMissingFiles(manifestFile);
}
void
cmVisualStudio10TargetGenerator
::WriteCommonMissingFiles(const std::string& manifestFile)
@ -3442,6 +3644,14 @@ cmVisualStudio10TargetGenerator
(*this->BuildFileStream) << cmVS10EscapeXML(smallLogo) << "\" />\n";
this->AddedFiles.push_back(smallLogo);
std::string smallLogo44 = this->DefaultArtifactDir + "/SmallLogo44x44.png";
cmSystemTools::CopyAFile(templateFolder + "/SmallLogo44x44.png",
smallLogo44, false);
this->ConvertToWindowsSlash(smallLogo44);
this->WriteString("<Image Include=\"", 2);
(*this->BuildFileStream) << cmVS10EscapeXML(smallLogo44) << "\" />\n";
this->AddedFiles.push_back(smallLogo44);
std::string logo = this->DefaultArtifactDir + "/Logo.png";
cmSystemTools::CopyAFile(templateFolder + "/Logo.png",
logo, false);

View File

@ -78,6 +78,13 @@ private:
void WriteMissingFilesWP81();
void WriteMissingFilesWS80();
void WriteMissingFilesWS81();
void WriteMissingFilesWS10_0();
void WritePlatformExtensions();
void WriteSinglePlatformExtension(std::string const& extension,
std::string const& version);
void WriteSDKReferences();
void WriteSingleSDKReference(std::string const& extension,
std::string const& version);
void WriteCommonMissingFiles(const std::string& manifestFile);
void WriteTargetSpecificReferences();

Binary file not shown.

After

Width:  |  Height:  |  Size: 554 B

View File

@ -1955,13 +1955,15 @@ ${CMake_BINARY_DIR}/bin/cmake -DDIR=dev -P ${CMake_SOURCE_DIR}/Utilities/Release
set(reg_vs10 "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\10.0;InstallDir]")
set(reg_vs11 "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\11.0;InstallDir]")
set(reg_vs12 "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\12.0;InstallDir]")
set(reg_vs14 "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows Kits\\Installed Roots;KitsRoot10]")
set(reg_ws80 "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Microsoft SDKs\\Windows\\v8.0;InstallationFolder]")
set(reg_ws81 "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Microsoft SDKs\\Windows\\v8.1;InstallationFolder]")
set(reg_ws10_0 "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\14.0\\Setup\\Build Tools for Windows 10;srcPath]")
set(reg_wp80 "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Microsoft SDKs\\WindowsPhone\\v8.0;InstallationFolder]")
set(reg_wp81 "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Microsoft SDKs\\WindowsPhone\\v8.1;InstallationFolder]")
select_wince_sdk(reg_wince wince_sdk)
set(reg_tegra "[HKEY_LOCAL_MACHINE\\SOFTWARE\\NVIDIA Corporation\\Nsight Tegra;sdkRoot]")
foreach(reg vs10 vs11 vs12 ws80 ws81 wp80 wp81 wince tegra)
foreach(reg vs10 vs11 vs12 vs14 ws80 ws81 ws10_0 wp80 wp81 wince tegra)
get_filename_component(r "${reg_${reg}}" ABSOLUTE)
if(IS_DIRECTORY "${r}")
set(${reg} 1)
@ -2008,6 +2010,11 @@ ${CMake_BINARY_DIR}/bin/cmake -DDIR=dev -P ${CMake_SOURCE_DIR}/Utilities/Release
-DCMAKE_SYSTEM_VERSION=8.1
)
endif()
if(vs14 AND ws10_0)
add_test_VSWinStorePhone(vs14-store10_0-X86 "Visual Studio 14 2015" WindowsStore 10.0)
add_test_VSWinStorePhone(vs14-store10_0-ARM "Visual Studio 14 2015 ARM" WindowsStore 10.0)
add_test_VSWinStorePhone(vs14-store10_0-X64 "Visual Studio 14 2015 Win64" WindowsStore 10.0)
endif()
if(vs11 AND wp80)
add_test_VSWinStorePhone(vs11-phone80-X86 "Visual Studio 11 2012" WindowsPhone 8.0)
add_test_VSWinStorePhone(vs11-phone80-ARM "Visual Studio 11 2012 ARM" WindowsPhone 8.0)

View File

@ -1,7 +1,8 @@
cmake_minimum_required(VERSION 3.0)
project(VSWinStorePhone)
if(MSVC_VERSION GREATER 1700)
if(MSVC_VERSION GREATER 1899)
set(COMPILER_VERSION "14")
elseif(MSVC_VERSION GREATER 1700)
set(COMPILER_VERSION "12")
elseif(MSVC_VERSION GREATER 1600)
set(COMPILER_VERSION "11")
@ -91,6 +92,7 @@ elseif (NOT "${PLATFORM}" STREQUAL "DESKTOP")
set(ASSET_FILES ${ASSET_FILES}
Direct3DApp1/Assets/Logo.png
Direct3DApp1/Assets/SmallLogo.png
Direct3DApp1/Assets/SmallLogo44x44.png
Direct3DApp1/Assets/SplashScreen.png
Direct3DApp1/Assets/StoreLogo.png
)
@ -124,4 +126,15 @@ source_group("Resource Files" FILES ${RESOURCE_FILES})
add_executable(${EXE_NAME} WIN32 ${SOURCE_FILES} ${HEADER_FILES} ${RESOURCE_FILES})
set_property(TARGET ${EXE_NAME} PROPERTY VS_WINRT_COMPONENT TRUE)
string(SUBSTRING "${CMAKE_SYSTEM_VERSION}" 0, 4, SHORT_VERSION)
if("${SHORT_VERSION}" STREQUAL "10.0")
message(STATUS "Targeting Windows 10. Setting Extensions to version ${CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION}")
set_property(TARGET ${EXE_NAME} PROPERTY VS_DESKTOP_EXTENSIONS_VERSION "${CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION}")
set_property(TARGET ${EXE_NAME} PROPERTY VS_MOBILE_EXTENSIONS_VERSION "${CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION}")
set_property(TARGET ${EXE_NAME} PROPERTY VS_IOT_EXTENSIONS_VERSION "${CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION}")
endif()
target_link_libraries(${EXE_NAME} d3d11)

Binary file not shown.

After

Width:  |  Height:  |  Size: 554 B

View File

@ -0,0 +1,36 @@
<?xml version="1.0" encoding="utf-8"?>
<Package
xmlns="http://schemas.microsoft.com/appx/manifest/foundation/windows10"
xmlns:mp="http://schemas.microsoft.com/appx/2014/phone/manifest"
xmlns:uap="http://schemas.microsoft.com/appx/manifest/uap/windows10"
IgnorableNamespaces="uap mp">
<Identity Name="@PACKAGE_GUID@" Publisher="CN=mgong" Version="1.1.0.0" />
<mp:PhoneIdentity PhoneProductId="@PACKAGE_GUID@" PhonePublisherId="00000000-0000-0000-0000-000000000000"/>
<Properties>
<DisplayName>@SHORT_NAME@</DisplayName>
<PublisherDisplayName>mgong</PublisherDisplayName>
<Logo>Assets/StoreLogo.png</Logo>
</Properties>
<Dependencies>
<TargetDeviceFamily Name="Windows.Universal" MinVersion="10.0.0.0" MaxVersionTested="10.0.65535.65535" />
</Dependencies>
<Resources>
<Resource Language="x-generate" />
</Resources>
<Applications>
<Application Id="App" Executable="$targetnametoken$.exe" EntryPoint="@SHORT_NAME@.App">
<uap:VisualElements
DisplayName="@SHORT_NAME@"
Description="@SHORT_NAME@"
BackgroundColor="#336699"
Square150x150Logo="Assets/Logo.png"
Square44x44Logo="Assets/SmallLogo44x44.png">
<uap:SplashScreen Image="Assets/SplashScreen.png" />
</uap:VisualElements>
</Application>
</Applications>
</Package>