diff options
author | Brad King <brad.king@kitware.com> | 2019-09-26 14:43:16 (GMT) |
---|---|---|
committer | Kitware Robot <kwrobot@kitware.com> | 2019-09-26 14:43:27 (GMT) |
commit | b4087a23538f87efebcc8e4ece248416c242167f (patch) | |
tree | 14294890998c408da76c415d8fb6e6187cc3bf3a /Tests | |
parent | 28a2613dd291c641f17940e3f996bd4cc9b9888d (diff) | |
parent | 4dc8c153ec40c48f88e74beb127949395dfbcf55 (diff) | |
download | CMake-b4087a23538f87efebcc8e4ece248416c242167f.zip CMake-b4087a23538f87efebcc8e4ece248416c242167f.tar.gz CMake-b4087a23538f87efebcc8e4ece248416c242167f.tar.bz2 |
Merge topic 'vs-ReferenceOutputAssembly-conditions'
4dc8c153ec Tests: Teach VSWinStorePhone to verify the content of generated xap
481070a78a Tests: Teach VSWinStorePhone to verify the content of generated appx/msix
acdb326610 VS: Do not reference output assemblies of targets with no output
Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !3778
Diffstat (limited to 'Tests')
-rw-r--r-- | Tests/CMakeLists.txt | 3 | ||||
-rw-r--r-- | Tests/VSWinStorePhone/CMakeLists.txt | 3 | ||||
-rw-r--r-- | Tests/VSWinStorePhone/CxxDLL/CMakeLists.txt | 3 | ||||
-rw-r--r-- | Tests/VSWinStorePhone/CxxDLL/cxxdll.cpp | 7 | ||||
-rw-r--r-- | Tests/VSWinStorePhone/CxxDLL/cxxdll.h | 5 | ||||
-rw-r--r-- | Tests/VSWinStorePhone/VerifyAppPackage.cmake | 34 |
6 files changed, 54 insertions, 1 deletions
diff --git a/Tests/CMakeLists.txt b/Tests/CMakeLists.txt index 78ae7aa..c284603 100644 --- a/Tests/CMakeLists.txt +++ b/Tests/CMakeLists.txt @@ -2079,6 +2079,9 @@ ${CMake_SOURCE_DIR}/Utilities/Release/push.bash --dir dev -- '${CMake_BUILD_NIGH --build-config $<CONFIGURATION> --build-options -DCMAKE_SYSTEM_NAME=${systemName} -DCMAKE_SYSTEM_VERSION=${systemVersion} + --test-command + ${CMAKE_CMAKE_COMMAND} -DAPP_PACKAGE_DIR="${CMake_BINARY_DIR}/Tests/VSWinStorePhone/${name}" + -P "${CMake_SOURCE_DIR}/Tests/VSWinStorePhone/VerifyAppPackage.cmake" ) list(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/VSWinStorePhone/${name}") endmacro() diff --git a/Tests/VSWinStorePhone/CMakeLists.txt b/Tests/VSWinStorePhone/CMakeLists.txt index efc7760..b8e157d 100644 --- a/Tests/VSWinStorePhone/CMakeLists.txt +++ b/Tests/VSWinStorePhone/CMakeLists.txt @@ -9,6 +9,7 @@ elseif(MSVC_VERSION GREATER 1600) endif() add_subdirectory(WinRT) +add_subdirectory(CxxDLL) set (APP_MANIFEST_NAME Package.appxmanifest) if("${CMAKE_SYSTEM_NAME}" STREQUAL "WindowsPhone") @@ -151,4 +152,4 @@ if("${SHORT_VERSION}" STREQUAL "10.0") 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 JusticeLeagueWinRT) +target_link_libraries(${EXE_NAME} d3d11 JusticeLeagueWinRT CxxDll) diff --git a/Tests/VSWinStorePhone/CxxDLL/CMakeLists.txt b/Tests/VSWinStorePhone/CxxDLL/CMakeLists.txt new file mode 100644 index 0000000..6bd32a2 --- /dev/null +++ b/Tests/VSWinStorePhone/CxxDLL/CMakeLists.txt @@ -0,0 +1,3 @@ +project(CxxDll CXX) + +add_library(CxxDll SHARED cxxdll.cpp) diff --git a/Tests/VSWinStorePhone/CxxDLL/cxxdll.cpp b/Tests/VSWinStorePhone/CxxDLL/cxxdll.cpp new file mode 100644 index 0000000..d82a792 --- /dev/null +++ b/Tests/VSWinStorePhone/CxxDLL/cxxdll.cpp @@ -0,0 +1,7 @@ +#include "cxxdll.h" +#include <iostream> + +void CxxDllClass::SomeMethod() +{ + std::cout << "CxxDllClass::SomeMethod\n"; +} diff --git a/Tests/VSWinStorePhone/CxxDLL/cxxdll.h b/Tests/VSWinStorePhone/CxxDLL/cxxdll.h new file mode 100644 index 0000000..86edceb --- /dev/null +++ b/Tests/VSWinStorePhone/CxxDLL/cxxdll.h @@ -0,0 +1,5 @@ +class __declspec(dllexport) CxxDllClass +{ +public: + static void SomeMethod(); +}; diff --git a/Tests/VSWinStorePhone/VerifyAppPackage.cmake b/Tests/VSWinStorePhone/VerifyAppPackage.cmake new file mode 100644 index 0000000..f9440d7 --- /dev/null +++ b/Tests/VSWinStorePhone/VerifyAppPackage.cmake @@ -0,0 +1,34 @@ +set(APP_PKG_NAME Direct3DApp1) + +# List of files that are expected to be present in the generated app package +set(EXPECTED_APP_PKG_CONTENT + ${APP_PKG_NAME}.exe + CxxDll.dll + JusticeLeagueWinRT.winmd + JusticeLeagueWinRT.dll +) + +# Windows app package formats can be either msix, appx or xap +file(GLOB_RECURSE ALL_APP_PKG_FILES ${APP_PACKAGE_DIR} ${APP_PKG_NAME}*.msix ${APP_PKG_NAME}*.appx ${APP_PKG_NAME}*.xap) + +# There can be only one generated app package +list(LENGTH ALL_APP_PKG_FILES APP_PKG_COUNT) +if(NOT APP_PKG_COUNT EQUAL 1) + message(FATAL_ERROR "Expected 1 generated app package, but detected ${APP_PKG_COUNT}: ${ALL_APP_PKG_FILES}") +endif() + +execute_process(COMMAND ${CMAKE_COMMAND} -E tar tf ${ALL_APP_PKG_FILES} + OUTPUT_VARIABLE APP_PKG_CONTENT_OUTPUT + ERROR_VARIABLE error + RESULT_VARIABLE result) + +if(NOT result EQUAL 0) + message(FATAL_ERROR "Listing app package content failed with: ${error}") +endif() + +foreach(app_pkg_item ${EXPECTED_APP_PKG_CONTENT}) + string(FIND ${APP_PKG_CONTENT_OUTPUT} ${app_pkg_item} _found) + if(_found EQUAL -1) + message(FATAL_ERROR "Generated app package is missing an expected item: ${app_pkg_item}") + endif() +endforeach() |