mirror of
https://github.com/Kitware/CMake.git
synced 2026-05-08 07:10:12 -05:00
72e7c45e98
Since 3.19, CMake generates a deprecation warning when using a minimum version less than 2.8.12. This eliminates those warnings generated during tests, which are typically hidden from the user and developer but are being generated nonetheless.
82 lines
2.6 KiB
CMake
82 lines
2.6 KiB
CMake
# This CMakeLists.txt file exists solely to drive the one found in the "src"
|
|
# subdir as an ExternalProject build. The project in "src" cannot build when
|
|
# there is a space in the directory name, so we copy that directory to a place
|
|
# guaranteed not to have a space in the name, build it there, and then copy the
|
|
# resulting output directory back up here into this CMake test's build tree.
|
|
#
|
|
if(NOT DEFINED CMAKE_BUILDNAME)
|
|
string(REGEX REPLACE "^.*/([^/]+)/[^/]+/([^/]+)$" "\\1" CMAKE_BUILDNAME "${CMAKE_CURRENT_BINARY_DIR}")
|
|
string(REGEX REPLACE "^.*/([^/]+)/[^/]+/([^/]+)$" "\\2" THIS_TESTNAME "${CMAKE_CURRENT_BINARY_DIR}")
|
|
string(REPLACE " " "_" CMAKE_BUILDNAME "${CMAKE_BUILDNAME}")
|
|
endif()
|
|
message(STATUS "CMAKE_BUILDNAME='${CMAKE_BUILDNAME}'")
|
|
message(STATUS "THIS_TESTNAME='${THIS_TESTNAME}'")
|
|
|
|
cmake_minimum_required(VERSION 2.8.12)
|
|
project(${THIS_TESTNAME})
|
|
|
|
include(ExternalProject)
|
|
|
|
if(NOT DEFINED HOME)
|
|
if(DEFINED ENV{CTEST_REAL_HOME})
|
|
set(HOME "$ENV{CTEST_REAL_HOME}")
|
|
else()
|
|
set(HOME "$ENV{HOME}")
|
|
endif()
|
|
|
|
if(NOT HOME AND WIN32)
|
|
# Try for USERPROFILE as HOME equivalent:
|
|
string(REPLACE "\\" "/" HOME "$ENV{USERPROFILE}")
|
|
endif()
|
|
|
|
# But just use root of SystemDrive if HOME contains any spaces:
|
|
# (Default on XP and earlier...)
|
|
if(HOME MATCHES " " AND WIN32)
|
|
string(REPLACE "\\" "/" HOME "$ENV{SystemDrive}")
|
|
endif()
|
|
if(HOME MATCHES " ")
|
|
set(HOME "")
|
|
endif()
|
|
endif()
|
|
message(STATUS "HOME='${HOME}'")
|
|
|
|
if(NOT DEFINED url)
|
|
set(url "${CMAKE_CURRENT_SOURCE_DIR}/src")
|
|
endif()
|
|
message(STATUS "url='${url}'")
|
|
|
|
set(base_dir "${HOME}/.cmake/Dashboards/${CMAKE_BUILDNAME}/${THIS_TESTNAME}")
|
|
set(binary_dir "${base_dir}/build")
|
|
set(source_dir "${base_dir}/src")
|
|
|
|
# Source dir for this project exists in the CMake source tree, but we cannot
|
|
# use it in-place since there might be a space in its directory name.
|
|
# Source dir is therefore copied under a '.cmake/Dashboards'
|
|
# dir in your HOME directory to give it a name with no spaces.
|
|
#
|
|
ExternalProject_Add(clean-${PROJECT_NAME}
|
|
DOWNLOAD_COMMAND ""
|
|
CONFIGURE_COMMAND ${CMAKE_COMMAND} -E rm -rf "${source_dir}"
|
|
BUILD_COMMAND ${CMAKE_COMMAND} -E rm -rf "${binary_dir}"
|
|
INSTALL_COMMAND ""
|
|
)
|
|
|
|
ExternalProject_Add(download-${PROJECT_NAME}
|
|
URL "${url}"
|
|
SOURCE_DIR "${source_dir}"
|
|
CONFIGURE_COMMAND ""
|
|
BUILD_COMMAND ""
|
|
INSTALL_COMMAND ""
|
|
DEPENDS clean-${PROJECT_NAME}
|
|
)
|
|
|
|
ExternalProject_Add(build-${PROJECT_NAME}
|
|
DOWNLOAD_COMMAND ""
|
|
SOURCE_DIR "${source_dir}"
|
|
BINARY_DIR "${binary_dir}"
|
|
INSTALL_COMMAND ${CMAKE_COMMAND} -E copy_directory
|
|
"${binary_dir}/${CMAKE_CFG_INTDIR}"
|
|
"${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}"
|
|
DEPENDS download-${PROJECT_NAME}
|
|
)
|