Support deploying dependencies in MSVC builds with CMake < 3.14

This commit is contained in:
Hyunjin Song
2019-08-31 09:14:36 +09:00
committed by Shmuel H
parent 2f64c461e8
commit 94354e3053
2 changed files with 12 additions and 8 deletions

View File

@@ -1,5 +1,5 @@
function(CreateTempFilePath)
set(options)
set(options CONFIG_SUFFIX)
set(oneValueArgs OUTPUT_VAR TAG)
set(multiValueArgs CONTENT)
cmake_parse_arguments(TEMP "${options}" "${oneValueArgs}"
@@ -10,9 +10,12 @@ function(CreateTempFilePath)
string(SHA1 hashed_content "${TEMP_CONTENT}")
set(file_name "${CMAKE_BINARY_DIR}/${TEMP_TAG}_${hashed_content}")
set(${TEMP_OUTPUT_VAR} "${file_name}" PARENT_SCOPE)
if(CONFIG_SUFFIX)
set(file_name "${file_name}_$<CONFIG>")
endif()
file(GENERATE OUTPUT "${file_name}"
CONTENT "${TEMP_CONTENT}")
set(${TEMP_OUTPUT_VAR} "${file_name}" PARENT_SCOPE)
endfunction()

View File

@@ -14,13 +14,14 @@ function(DEFINE_INSTALL_VAR)
# install(CODE) does not support generator expression in ver<3.14
if(VAR_GENERATOR_EXPRESSION AND ${CMAKE_VERSION} VERSION_LESS "3.14.0")
if(MSVC)
message(FATAL_ERROR "Installing is not supported with msvc and cmake<3.14")
endif()
include(CreateTempFile)
CreateTempFilePath(OUTPUT_VAR file_path TAG "${VAR_NAME}" CONTENT "${VAR_CONTENT}")
install(CODE "file(READ \"${file_path}\" \"${VAR_NAME}\")")
if(CMAKE_CONFIGURATION_TYPES) # in case of multi-config generators like MSVC generators
CreateTempFilePath(OUTPUT_VAR file_path TAG "${VAR_NAME}" CONTENT "${VAR_CONTENT}" CONFIG_SUFFIX)
install(CODE "file(READ \"${file_path}_\${CMAKE_INSTALL_CONFIG_NAME}\" \"${VAR_NAME}\")")
else()
CreateTempFilePath(OUTPUT_VAR file_path TAG "${VAR_NAME}" CONTENT "${VAR_CONTENT}")
install(CODE "file(READ \"${file_path}\" \"${VAR_NAME}\")")
endif()
else()
if(VAR_GENERATOR_EXPRESSION)
cmake_policy(SET CMP0087 NEW)