mirror of
https://github.com/microsoft/vcpkg.git
synced 2025-06-07 22:52:52 +08:00
Transfer cmake-get-vars fixes
This commit is contained in:
parent
0f2a38ee56
commit
4cf7caaaba
@ -1,8 +1,26 @@
|
||||
cmake_minimum_required(VERSION 3.20)
|
||||
|
||||
if(NOT VCPKG_OUTPUT_FILE)
|
||||
message(FATAL_ERROR "VCPKG_OUTPUT_FILE is required to be defined")
|
||||
endif()
|
||||
|
||||
if(NOT CMAKE_BUILD_TYPE)
|
||||
message(FATAL_ERROR "CMAKE_BUILD_TYPE is required to be defined")
|
||||
else()
|
||||
string(TOUPPER "${CMAKE_BUILD_TYPE}" VCPKG_CONFIGS)
|
||||
endif()
|
||||
|
||||
set(VCPKG_LANGUAGES "C;CXX" CACHE STRING "Languages to enables for this project")
|
||||
|
||||
set(OUTPUT_STRING)
|
||||
set(OUTPUT_STRING "# Generator: ${CMAKE_CURRENT_LIST_FILE}\n")
|
||||
|
||||
function(escaped out_var value)
|
||||
string(REPLACE "\\" "\\\\" value "${value}")
|
||||
string(REPLACE "\"" "\\\"" value "${value}")
|
||||
string(REPLACE "\$" "\\\$" value "${value}")
|
||||
set(${out_var} "${value}" PARENT_SCOPE)
|
||||
endfunction()
|
||||
|
||||
# Build default checklists
|
||||
list(APPEND VCPKG_DEFAULT_VARS_TO_CHECK CMAKE_CROSSCOMPILING
|
||||
CMAKE_SYSTEM_NAME
|
||||
@ -64,34 +82,23 @@ set(VCPKG_VARS_TO_CHECK "${VCPKG_DEFAULT_VARS_TO_CHECK}" CACHE STRING "Variables
|
||||
set(VCPKG_FLAGS_TO_CHECK "${VCPKG_DEFAULT_FLAGS_TO_CHECK}" CACHE STRING "Variables to check. If not given there is a list of defaults")
|
||||
set(VCPKG_ENV_VARS_TO_CHECK "${VCPKG_DEFAULT_ENV_VARS_TO_CHECK}" CACHE STRING "Variables to check. If not given there is a list of defaults")
|
||||
|
||||
if(NOT VCPKG_OUTPUT_FILE)
|
||||
message(FATAL_ERROR "VCPKG_OUTPUT_FILE is required to be defined")
|
||||
endif()
|
||||
|
||||
if(NOT CMAKE_BUILD_TYPE)
|
||||
message(FATAL_ERROR "CMAKE_BUILD_TYPE is required to be defined")
|
||||
else()
|
||||
string(TOUPPER "${CMAKE_BUILD_TYPE}" VCPKG_CONFIGS)
|
||||
endif()
|
||||
|
||||
|
||||
project(get_cmake_vars LANGUAGES ${VCPKG_LANGUAGES})
|
||||
|
||||
foreach(VAR IN LISTS VCPKG_VARS_TO_CHECK)
|
||||
string(APPEND OUTPUT_STRING "set(${VCPKG_VAR_PREFIX}_${VAR} \"${${VAR}}\")\n")
|
||||
escaped(value "${${VAR}}")
|
||||
string(APPEND OUTPUT_STRING "set(${VCPKG_VAR_PREFIX}_${VAR} \"${value}\")\n")
|
||||
endforeach()
|
||||
|
||||
foreach(_env IN LISTS VCPKG_ENV_VARS_TO_CHECK)
|
||||
if(CMAKE_HOST_WIN32)
|
||||
string(REPLACE "\\" "/" ENV_${_env} "$ENV{${_env}}")
|
||||
string(APPEND OUTPUT_STRING "set(${VCPKG_VAR_PREFIX}_ENV_${_env} \"${ENV_${_env}}\")\n")
|
||||
string(REPLACE "\\" "/" value "$ENV{${_env}}")
|
||||
escaped(value "${value}")
|
||||
else()
|
||||
string(APPEND OUTPUT_STRING "set(${VCPKG_VAR_PREFIX}_ENV_${_env} \"$ENV{${_env}}\")\n")
|
||||
escaped(value "$ENV{${_env}}")
|
||||
endif()
|
||||
string(APPEND OUTPUT_STRING "set(${VCPKG_VAR_PREFIX}_ENV_${_env} \"${value}\")\n")
|
||||
endforeach()
|
||||
|
||||
macro(_vcpkg_adjust_flags flag_var)
|
||||
if(MSVC) # Transform MSVC /flags to -flags due to bash scripts intepreting /flag as a path.
|
||||
if(MSVC) # Transform MSVC /flags to -flags due to msys2 runtime intepreting /flag as a path.
|
||||
string(REGEX REPLACE "(^| )/" "\\1-" ${flag_var} "${${flag_var}}")
|
||||
if(CMAKE_SYSTEM_NAME STREQUAL "WindowsStore")
|
||||
if("${flag_var}" STREQUAL "CMAKE_CXX_FLAGS")
|
||||
@ -133,15 +140,16 @@ endmacro()
|
||||
foreach(flag IN LISTS VCPKG_FLAGS_TO_CHECK)
|
||||
string(STRIP "${${flag}}" ${flag}) # Strip leading and trailing whitespaces
|
||||
_vcpkg_adjust_flags(${flag})
|
||||
string(REPLACE [[\\]] [[\]] ${flag} "${${flag}}")
|
||||
string(APPEND OUTPUT_STRING "set(${VCPKG_VAR_PREFIX}_RAW_${flag} \" ${${flag}}\")\n")
|
||||
escaped(value "${${flag}}")
|
||||
string(APPEND OUTPUT_STRING "set(${VCPKG_VAR_PREFIX}_RAW_${flag} \" ${value}\")\n")
|
||||
foreach(config IN LISTS VCPKG_CONFIGS)
|
||||
escaped(raw_value "${CMAKE_${flag}_FLAGS_${config}}")
|
||||
string(APPEND OUTPUT_STRING "set(${VCPKG_VAR_PREFIX}_RAW_${flag}_${config} \"${raw_value}\")\n")
|
||||
string(STRIP "${${flag}_${config}}" ${flag}_${config})
|
||||
_vcpkg_adjust_flags(${flag}_${config})
|
||||
string(APPEND OUTPUT_STRING "set(${VCPKG_VAR_PREFIX}_RAW_${flag}_${config} \"${CMAKE_${flag}_FLAGS_${config}}\")\n")
|
||||
set(COMBINED_${flag}_${config} "${${flag}} ${${flag}_${config}}")
|
||||
string(STRIP "${COMBINED_${flag}_${config}}" COMBINED_${flag}_${config})
|
||||
string(APPEND OUTPUT_STRING "set(${VCPKG_VAR_PREFIX}_${flag}_${config} \"${COMBINED_${flag}_${config}}\")\n")
|
||||
escaped(combined_value "${${flag}} ${${flag}_${config}}")
|
||||
string(STRIP "${combined_value}" combined_value)
|
||||
string(APPEND OUTPUT_STRING "set(${VCPKG_VAR_PREFIX}_${flag}_${config} \"${combined_value}\")\n")
|
||||
endforeach()
|
||||
endforeach()
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user