EnvVars.cmake 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. include(ExternalProject)
  2. #
  3. ## Set environment variables on custom commands
  4. #
  5. # Comma list-separator
  6. set(ScriptPath "${CMAKE_CURRENT_SOURCE_DIR}/EnvVars/EchoVar.cmake")
  7. ExternalProject_Add(CustomCommandEnvVars
  8. DOWNLOAD_COMMAND ""
  9. UPDATE_COMMAND ""
  10. PATCH_COMMAND ""
  11. LIST_SEPARATOR ,
  12. CONFIGURE_COMMAND "${CMAKE_COMMAND}" -P ${ScriptPath}
  13. COMMAND "${CMAKE_COMMAND}" -DVARNAME=Stage -P ${ScriptPath}
  14. COMMAND "${CMAKE_COMMAND}" -DVARNAME=ListVar -P ${ScriptPath}
  15. CONFIGURE_ENVIRONMENT_MODIFICATION
  16. Stage=set:config
  17. ListVar=set:4,5,6
  18. ListSeparator=set:,
  19. BUILD_COMMAND "${CMAKE_COMMAND}" -P ${ScriptPath}
  20. BUILD_ENVIRONMENT_MODIFICATION
  21. Stage=set:build
  22. ListVar=set:4,5,6
  23. ListSeparator=set:,
  24. INSTALL_COMMAND "${CMAKE_COMMAND}" -P ${ScriptPath}
  25. INSTALL_ENVIRONMENT_MODIFICATION
  26. InstallVar=set:install
  27. Stage=set:install
  28. ListVar=set:4,5,6
  29. ListSeparator=set:,
  30. TEST_COMMAND "${CMAKE_COMMAND}" -P ${ScriptPath}
  31. TEST_ENVIRONMENT_MODIFICATION
  32. Stage=set:test
  33. ListVar=set:4,5,6
  34. ListSeparator=set:,)
  35. ExternalProject_Add_Step(CustomCommandEnvVars custom
  36. DEPENDERS configure
  37. COMMAND "${CMAKE_COMMAND}" -DVARNAME=CustomVar -P ${ScriptPath}
  38. COMMAND "${CMAKE_COMMAND}" -DVARNAME=CustomVar2 -P ${ScriptPath}
  39. COMMAND "${CMAKE_COMMAND}" -P ${ScriptPath}
  40. ENVIRONMENT_MODIFICATION
  41. CustomVar=set:custom
  42. CustomVar2=set:custom2
  43. Stage=set:custom
  44. ListVar=set:1,2,3
  45. ListSeparator=set:,)
  46. #
  47. ## Set environment variables on the default commands
  48. #
  49. # No list separator
  50. ExternalProject_Add(DefaultCommandEnvVars
  51. SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/EnvVars"
  52. DOWNLOAD_COMMAND ""
  53. UPDATE_COMMAND ""
  54. PATCH_COMMAND ""
  55. DEPENDS CustomCommandEnvVars
  56. CMAKE_ARGS
  57. -DVARIABLE=ConfigVar
  58. CONFIGURE_ENVIRONMENT_MODIFICATION
  59. ConfigVar=set:config
  60. ListVar=set:7,8,9
  61. ListSeparator=set:,
  62. BUILD_ENVIRONMENT_MODIFICATION
  63. Stage=set:build
  64. ListVar=set:7,8,9,10
  65. ListSeparator=set:,
  66. INSTALL_COMMAND "" # empty install command should not show up
  67. INSTALL_ENVIRONMENT_MODIFICATION
  68. Stage=set:install
  69. Separator=set:,)
  70. # Using `:` as a list separator on Windows does not work as it replaces the `:`
  71. # between the drive letter and the filepath with `;`.
  72. if(NOT WIN32)
  73. # Ensure that using `:` as a list-separator does not break setting environment
  74. # variables
  75. ExternalProject_Add(DefaultCommandListSepEnvVars
  76. SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/EnvVars"
  77. DOWNLOAD_COMMAND ""
  78. UPDATE_COMMAND ""
  79. PATCH_COMMAND ""
  80. DEPENDS DefaultCommandEnvVars
  81. LIST_SEPARATOR :
  82. CMAKE_ARGS
  83. -DVARIABLE=ConfigVar
  84. CONFIGURE_ENVIRONMENT_MODIFICATION
  85. ConfigVar=set:config
  86. ListVar=set:10:11:12
  87. ListSeparator=set::
  88. BUILD_ENVIRONMENT_MODIFICATION
  89. Stage=set:build
  90. ListVar=set:10:11:12
  91. ListSeparator=set::
  92. INSTALL_ENVIRONMENT_MODIFICATION
  93. Stage=set:install
  94. ListSeparator=set::
  95. ListVar=set:10:11:12:13)
  96. endif()