1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125
|
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()
|