mirror of
https://github.com/Kitware/CMake.git
synced 2026-05-05 05:39:57 -05:00
8afe5f227c
Extend commite301cbffcc(ExternalProject: Set environment variables, 2025-04-09, v4.2.0-rc1~480^2) and commit9cb590b843(ExternalProject: Fix lists and empty commands with environment modification, 2025-09-11, v4.2.0-rc1~9^2) to match `_` in environment modification operation names. Fixes: #27409
126 lines
3.5 KiB
CMake
126 lines
3.5 KiB
CMake
include(ExternalProject)
|
|
|
|
#
|
|
## Set environment variables on custom commands
|
|
#
|
|
|
|
# Comma list-separator
|
|
set(ScriptPath "${CMAKE_CURRENT_SOURCE_DIR}/EnvVars/EchoVar.cmake")
|
|
ExternalProject_Add(CustomCommand
|
|
DOWNLOAD_COMMAND ""
|
|
UPDATE_COMMAND ""
|
|
PATCH_COMMAND ""
|
|
LIST_SEPARATOR ,
|
|
CONFIGURE_COMMAND ""
|
|
COMMAND
|
|
COMMAND "${CMAKE_COMMAND}" -DMYLIST='a,b,c' -P ${ScriptPath}
|
|
COMMAND "${CMAKE_COMMAND}" -DVARNAME=Stage -P ${ScriptPath}
|
|
COMMAND ""
|
|
COMMAND COMMAND COMMAND
|
|
COMMAND "${CMAKE_COMMAND}" -E echo "" ""
|
|
COMMAND
|
|
COMMAND "${CMAKE_COMMAND}" -DVARNAME=ListVar -P ${ScriptPath}
|
|
CONFIGURE_ENVIRONMENT_MODIFICATION
|
|
Stage=set:config
|
|
ListVar=set:4,5,6
|
|
ListSeparator=set:,
|
|
BUILD_COMMAND "${CMAKE_COMMAND}" -P ${ScriptPath}
|
|
BUILD_ENVIRONMENT_MODIFICATION
|
|
Stage=set:build
|
|
ListVar=set:4,5,6
|
|
ListSeparator=set:,
|
|
INSTALL_COMMAND "${CMAKE_COMMAND}" -P ${ScriptPath}
|
|
INSTALL_ENVIRONMENT_MODIFICATION
|
|
InstallVar=set:install
|
|
Stage=set:install
|
|
ListVar=set:4,5,6
|
|
ListSeparator=set:,
|
|
TEST_COMMAND "${CMAKE_COMMAND}" -P ${ScriptPath}
|
|
TEST_ENVIRONMENT_MODIFICATION
|
|
Stage=set:test
|
|
ListVar=set:4,5,6
|
|
ListSeparator=set:,)
|
|
|
|
ExternalProject_Add_Step(CustomCommand custom
|
|
DEPENDERS configure
|
|
COMMAND "${CMAKE_COMMAND}" -DVARNAME=CustomVar -P ${ScriptPath}
|
|
COMMAND "${CMAKE_COMMAND}" -DVARNAME=CustomVar2 -P ${ScriptPath}
|
|
COMMAND "${CMAKE_COMMAND}" -P ${ScriptPath}
|
|
ENVIRONMENT_MODIFICATION
|
|
CustomVar=set:custom
|
|
CustomVar2=set:custom2
|
|
Stage=set:custom
|
|
ListVar=set:1,2,3
|
|
ListSeparator=set:,)
|
|
|
|
#
|
|
## Set environment variables on the default commands
|
|
#
|
|
|
|
# No list separator
|
|
ExternalProject_Add(DefaultCommand
|
|
SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/EnvVars"
|
|
DOWNLOAD_COMMAND ""
|
|
UPDATE_COMMAND ""
|
|
PATCH_COMMAND ""
|
|
DEPENDS CustomCommand
|
|
CMAKE_ARGS
|
|
-DVARIABLE=ConfigVar
|
|
CONFIGURE_ENVIRONMENT_MODIFICATION
|
|
ConfigVar=string_append:fig # RunCMakeTest.cmake sets to "con"
|
|
ListVar=set:7,8,9
|
|
ListSeparator=set:,
|
|
BUILD_ENVIRONMENT_MODIFICATION
|
|
Stage=set:build
|
|
ListVar=set:7,8,9,10
|
|
ListSeparator=set:,
|
|
INSTALL_COMMAND "" # empty install command should not show up
|
|
INSTALL_ENVIRONMENT_MODIFICATION
|
|
Stage=set:install
|
|
Separator=set:,)
|
|
|
|
ExternalProject_Add(DefaultCommandListSep
|
|
SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/EnvVars"
|
|
DOWNLOAD_COMMAND ""
|
|
UPDATE_COMMAND ""
|
|
PATCH_COMMAND ""
|
|
DEPENDS DefaultCommand
|
|
LIST_SEPARATOR `
|
|
CMAKE_ARGS
|
|
-DVARIABLE=ConfigVar
|
|
-DMYLIST=d`e`f`g
|
|
CONFIGURE_ENVIRONMENT_MODIFICATION
|
|
ConfigVar=set:config
|
|
ListVar=set:9`8`7
|
|
ListSeparator=set:`
|
|
BUILD_COMMAND ""
|
|
INSTALL_COMMAND "")
|
|
|
|
# Using `:` as a list separator on Windows does not work as it replaces the `:`
|
|
# between the drive letter and the filepath with `;`.
|
|
if(NOT WIN32)
|
|
# Ensure that using `:` as a list-separator does not break setting environment
|
|
# variables
|
|
ExternalProject_Add(DefaultCommandListColon
|
|
SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/EnvVars"
|
|
DOWNLOAD_COMMAND ""
|
|
UPDATE_COMMAND ""
|
|
PATCH_COMMAND ""
|
|
DEPENDS DefaultCommandListSep
|
|
LIST_SEPARATOR :
|
|
CMAKE_ARGS
|
|
-DVARIABLE=ConfigVar
|
|
CONFIGURE_ENVIRONMENT_MODIFICATION
|
|
ConfigVar=set:config
|
|
ListVar=set:10:11:12
|
|
ListSeparator=set::
|
|
BUILD_ENVIRONMENT_MODIFICATION
|
|
Stage=set:build
|
|
ListVar=set:10:11:12
|
|
ListSeparator=set::
|
|
INSTALL_ENVIRONMENT_MODIFICATION
|
|
Stage=set:install
|
|
ListSeparator=set::
|
|
ListVar=set:10:11:12:13)
|
|
endif()
|