mirror of
https://github.com/Kitware/CMake.git
synced 2026-05-02 12:19:54 -05:00
Tests: Add RunCMake.CPackCommandLine case for multi-config package
In commit da5ac4bb60 (cpack: Add `CPACK_INSTALL_CMAKE_CONFIGURATIONS`
variable, 2019-07-10, v3.16.0-rc1~165^2) we added support for running
the `cpack -C ...` command-line with multiple configurations. Add an
explicit test for this.
Fixes: #19918
This commit is contained in:
@@ -0,0 +1,3 @@
|
|||||||
|
cmake_minimum_required(VERSION 3.16)
|
||||||
|
project(${RunCMake_TEST} NONE)
|
||||||
|
include(${RunCMake_TEST}.cmake)
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
MultiConfig-0\.1\.1-[^/
|
||||||
|
]*/lib/(lib|)foo_dbg\.(a|lib)
|
||||||
|
MultiConfig-0\.1\.1-[^/
|
||||||
|
]*/lib/(lib|)foo_rel\.(a|lib)
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
^CPack: Create package using ZIP
|
||||||
|
CPack: Install projects
|
||||||
|
CPack: - Install project: MultiConfig \[Debug\]
|
||||||
|
CPack: - Install project: MultiConfig \[Release\]
|
||||||
|
CPack: Create package
|
||||||
|
CPack: - package: [^
|
||||||
|
]*/Tests/RunCMake/CPackCommandLine/MultiConfig-build/MultiConfig-0.1.1-[^
|
||||||
|
]*.zip generated.$
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
enable_language(C)
|
||||||
|
|
||||||
|
include(CPack)
|
||||||
|
|
||||||
|
add_library(foo foo.c)
|
||||||
|
set_property(TARGET foo PROPERTY DEBUG_POSTFIX _dbg)
|
||||||
|
set_property(TARGET foo PROPERTY RELEASE_POSTFIX _rel)
|
||||||
|
|
||||||
|
install(TARGETS foo)
|
||||||
@@ -8,3 +8,26 @@ set(CPACK_PACKAGE_VERSION "1")
|
|||||||
set(RunCMake_TEST_NO_CLEAN 1)
|
set(RunCMake_TEST_NO_CLEAN 1)
|
||||||
run_cmake_command(NotAGenerator ${CMAKE_CPACK_COMMAND} -G NotAGenerator)
|
run_cmake_command(NotAGenerator ${CMAKE_CPACK_COMMAND} -G NotAGenerator)
|
||||||
unset(RunCMake_TEST_NO_CLEAN)
|
unset(RunCMake_TEST_NO_CLEAN)
|
||||||
|
|
||||||
|
function(run_MultiConfig)
|
||||||
|
set(RunCMake_TEST_BINARY_DIR "${RunCMake_BINARY_DIR}/MultiConfig-build")
|
||||||
|
run_cmake(MultiConfig)
|
||||||
|
set(RunCMake_TEST_NO_CLEAN 1)
|
||||||
|
run_cmake_command(MultiConfig-build-dbg ${CMAKE_COMMAND} --build . --config Debug)
|
||||||
|
run_cmake_command(MultiConfig-build-rel ${CMAKE_COMMAND} --build . --config Release)
|
||||||
|
run_cmake_command(MultiConfig-package ${CMAKE_CPACK_COMMAND} -G ZIP -C "Debug\;Release")
|
||||||
|
set(zip_glob "${RunCMake_TEST_BINARY_DIR}/MultiConfig-0.1.1-*.zip")
|
||||||
|
file(GLOB zips "${zip_glob}")
|
||||||
|
set(zip_found 0)
|
||||||
|
foreach(zip IN LISTS zips)
|
||||||
|
set(zip_found 1)
|
||||||
|
run_cmake_command(MultiConfig-check ${CMAKE_COMMAND} -E tar tf "${zip}")
|
||||||
|
endforeach()
|
||||||
|
if(NOT zip_found)
|
||||||
|
message(SEND_ERROR "No package file found at\n ${zip_glob}")
|
||||||
|
endif()
|
||||||
|
endfunction()
|
||||||
|
|
||||||
|
if(RunCMake_GENERATOR MATCHES "Visual Studio|Xcode")
|
||||||
|
run_MultiConfig()
|
||||||
|
endif()
|
||||||
|
|||||||
@@ -0,0 +1,4 @@
|
|||||||
|
int foo(void)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user