的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之后的参数是“;”?既然没有“;”在输入字符串中。它是如何运作的?
答案 0 :(得分:1)
分号字符用作CMake language中列表的分隔符。提供给字符串替换函数的实际字符串如下所示:
STRING(REPLACE ";" " " CMAKE_CXX_FLAGS "-Wall;-Wextra;-O2;-std=c++11")