为什么字符串替换cmake有这种行为?

时间:2018-01-17 02:20:17

标签: cmake

的CMakeLists.txt:

CMAKE_MINIMUM_REQUIRED(VERSION 2.8)

SET(CMAKE_USE_RELATIVE_PAHTS on)

SET(CXX_FLAGS
  -Wall
  -Wextra
  -O2
  -std=c++11
  )
STRING(REPLACE ";" " " CMAKE_CXX_FLAGS "${CXX_FLAGS}")

MESSAGE(STATUS ${CXX_FLAGS})
MESSAGE(STATUS ${CMAKE_CXX_FLAGS})

输出是:

-- -Wall-Wextra-O2-std=c++11
-- -Wall -Wextra -O2 -std=c++11

所以我很好奇为什么REPLACE之后的参数是“;”?既然没有“;”在输入字符串中。它是如何运作的?

1 个答案:

答案 0 :(得分:1)

分号字符用作CMake language中列表的分隔符。提供给字符串替换函数的实际字符串如下所示:

STRING(REPLACE ";" " " CMAKE_CXX_FLAGS "-Wall;-Wextra;-O2;-std=c++11")