Commit 40e12882 authored by Brad King's avatar Brad King Committed by Kitware Robot
Browse files

Merge topic 'winrtrefs'

cff026db VS: Fix WinRT component references
6c21722a

 Tests: Fix VSWinStorePhone test with Windows 10 SDK 17763
Acked-by: Kitware Robot's avatarKitware Robot <kwrobot@kitware.com>
Merge-request: !2906
parents dc4a2749 cff026db
......@@ -3884,8 +3884,8 @@ void cmVisualStudio10TargetGenerator::WriteProjectReferences(Elem& e0)
this->WriteDotNetReferenceCustomTags(e2, name);
// If the dependency target is not managed (compiled with /clr or
// C# target) we cannot reference it and have to set
// 'ReferenceOutputAssembly' to false.
// C# target) and not a WinRT component we cannot reference it and
// have to set 'ReferenceOutputAssembly' to false.
auto referenceNotManaged =
dt->GetManagedType("") < cmGeneratorTarget::ManagedType::Mixed;
// Workaround to check for manually set /clr flags.
......@@ -3902,6 +3902,12 @@ void cmVisualStudio10TargetGenerator::WriteProjectReferences(Elem& e0)
if (referenceNotManaged && dt->GetType() == cmStateEnums::STATIC_LIBRARY) {
referenceNotManaged = !dt->IsCSharpOnly();
}
// Referencing WinRT components is okay.
if (referenceNotManaged) {
referenceNotManaged = !dt->GetPropertyAsBool("VS_WINRT_COMPONENT");
}
if (referenceNotManaged) {
e2.Element("ReferenceOutputAssembly", "false");
e2.Element("CopyToOutputDirectory", "Never");
......
......@@ -8,6 +8,8 @@ elseif(MSVC_VERSION GREATER 1600)
set(COMPILER_VERSION "11")
endif()
add_subdirectory(WinRT)
set (APP_MANIFEST_NAME Package.appxmanifest)
if("${CMAKE_SYSTEM_NAME}" STREQUAL "WindowsPhone")
set(PLATFORM WP)
......@@ -139,11 +141,14 @@ 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}")
# The last IOT reference is on 10.0.17134.0, so only add it if supported
if("${CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION}" VERSION_LESS "10.0.17135.0")
set_property(TARGET ${EXE_NAME} PROPERTY VS_IOT_EXTENSIONS_VERSION "${CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION}")
endif()
# Add a reference to an SDK
set_property(TARGET ${EXE_NAME} PROPERTY VS_SDK_REFERENCES "Microsoft.UniversalCRT.Debug, Version=${CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION}")
endif()
target_link_libraries(${EXE_NAME} d3d11)
target_link_libraries(${EXE_NAME} d3d11 JusticeLeagueWinRT)
......@@ -6,11 +6,15 @@ using namespace DirectX;
using namespace Microsoft::WRL;
using namespace Windows::Foundation;
using namespace Windows::UI::Core;
using namespace JusticeLeagueWinRT;
CubeRenderer::CubeRenderer()
: m_loadingComplete(false)
, m_indexCount(0)
{
// Create a new WinRT object to validate that we can link properly
Batman ^ hero = ref new Batman();
hero->savePeople();
}
void CubeRenderer::CreateDeviceResources()
......
#include "Batman.h"
using namespace JusticeLeagueWinRT;
using namespace Platform;
Batman::Batman()
{
}
void Batman::savePeople()
{
int i = 0;
i++;
}
#pragma once
namespace JusticeLeagueWinRT {
public
ref class Batman sealed
{
public:
Batman();
void savePeople();
};
}
project(JusticeLeagueWinRT CXX)
# create project
add_library(JusticeLeagueWinRT SHARED
"${CMAKE_CURRENT_SOURCE_DIR}/Batman.cpp"
"${CMAKE_CURRENT_SOURCE_DIR}/Batman.h"
)
set_target_properties(JusticeLeagueWinRT PROPERTIES
VS_WINRT_COMPONENT TRUE
VS_GLOBAL_ROOTNAMESPACE "JusticeLeagueWinRT"
OUTPUT_NAME "JusticeLeagueWinRT"
)
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment