mirror of
https://github.com/microsoft/vcpkg.git
synced 2025-06-07 22:50:31 +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)
|
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(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
|
# Build default checklists
|
||||||
list(APPEND VCPKG_DEFAULT_VARS_TO_CHECK CMAKE_CROSSCOMPILING
|
list(APPEND VCPKG_DEFAULT_VARS_TO_CHECK CMAKE_CROSSCOMPILING
|
||||||
CMAKE_SYSTEM_NAME
|
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_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")
|
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)
|
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()
|
endforeach()
|
||||||
|
|
||||||
foreach(_env IN LISTS VCPKG_ENV_VARS_TO_CHECK)
|
foreach(_env IN LISTS VCPKG_ENV_VARS_TO_CHECK)
|
||||||
if(CMAKE_HOST_WIN32)
|
if(CMAKE_HOST_WIN32)
|
||||||
string(REPLACE "\\" "/" ENV_${_env} "$ENV{${_env}}")
|
string(REPLACE "\\" "/" value "$ENV{${_env}}")
|
||||||
string(APPEND OUTPUT_STRING "set(${VCPKG_VAR_PREFIX}_ENV_${_env} \"${ENV_${_env}}\")\n")
|
escaped(value "${value}")
|
||||||
else()
|
else()
|
||||||
string(APPEND OUTPUT_STRING "set(${VCPKG_VAR_PREFIX}_ENV_${_env} \"$ENV{${_env}}\")\n")
|
escaped(value "$ENV{${_env}}")
|
||||||
endif()
|
endif()
|
||||||
|
string(APPEND OUTPUT_STRING "set(${VCPKG_VAR_PREFIX}_ENV_${_env} \"${value}\")\n")
|
||||||
endforeach()
|
endforeach()
|
||||||
|
|
||||||
macro(_vcpkg_adjust_flags flag_var)
|
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}}")
|
string(REGEX REPLACE "(^| )/" "\\1-" ${flag_var} "${${flag_var}}")
|
||||||
if(CMAKE_SYSTEM_NAME STREQUAL "WindowsStore")
|
if(CMAKE_SYSTEM_NAME STREQUAL "WindowsStore")
|
||||||
if("${flag_var}" STREQUAL "CMAKE_CXX_FLAGS")
|
if("${flag_var}" STREQUAL "CMAKE_CXX_FLAGS")
|
||||||
@ -133,15 +140,16 @@ endmacro()
|
|||||||
foreach(flag IN LISTS VCPKG_FLAGS_TO_CHECK)
|
foreach(flag IN LISTS VCPKG_FLAGS_TO_CHECK)
|
||||||
string(STRIP "${${flag}}" ${flag}) # Strip leading and trailing whitespaces
|
string(STRIP "${${flag}}" ${flag}) # Strip leading and trailing whitespaces
|
||||||
_vcpkg_adjust_flags(${flag})
|
_vcpkg_adjust_flags(${flag})
|
||||||
string(REPLACE [[\\]] [[\]] ${flag} "${${flag}}")
|
escaped(value "${${flag}}")
|
||||||
string(APPEND OUTPUT_STRING "set(${VCPKG_VAR_PREFIX}_RAW_${flag} \" ${${flag}}\")\n")
|
string(APPEND OUTPUT_STRING "set(${VCPKG_VAR_PREFIX}_RAW_${flag} \" ${value}\")\n")
|
||||||
foreach(config IN LISTS VCPKG_CONFIGS)
|
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})
|
string(STRIP "${${flag}_${config}}" ${flag}_${config})
|
||||||
_vcpkg_adjust_flags(${flag}_${config})
|
_vcpkg_adjust_flags(${flag}_${config})
|
||||||
string(APPEND OUTPUT_STRING "set(${VCPKG_VAR_PREFIX}_RAW_${flag}_${config} \"${CMAKE_${flag}_FLAGS_${config}}\")\n")
|
escaped(combined_value "${${flag}} ${${flag}_${config}}")
|
||||||
set(COMBINED_${flag}_${config} "${${flag}} ${${flag}_${config}}")
|
string(STRIP "${combined_value}" combined_value)
|
||||||
string(STRIP "${COMBINED_${flag}_${config}}" COMBINED_${flag}_${config})
|
string(APPEND OUTPUT_STRING "set(${VCPKG_VAR_PREFIX}_${flag}_${config} \"${combined_value}\")\n")
|
||||||
string(APPEND OUTPUT_STRING "set(${VCPKG_VAR_PREFIX}_${flag}_${config} \"${COMBINED_${flag}_${config}}\")\n")
|
|
||||||
endforeach()
|
endforeach()
|
||||||
endforeach()
|
endforeach()
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user