我的 CMakeLists.txt 的一部分:
...
set(PATH_1 ${PROJECT_SOURCE_DIR}/parser)
set(PATH_2 ${PROJECT_SOURCE_DIR}/block)
string(REPLACE "/" "\\" PATH_1 ${PATH_1})
string(REPLACE "/" "\\" PATH_2 ${PATH_2})
set(paths
"\"${PATH_1}\""
"\"${PATH_2}\"")
message("-j${paths}")
target_link_options(${target} PRIVATE
"-j${paths}")
...
输出cmake:
-j"C:\some path\to directory_1\parser";"C:\some path\to directory_2\block"
但在 build.ninja 中:
LINK_FLAGS = ... -j\"C:\some path\to directory_1\parser\" \"C:\some path\to directory_2\block\"
需要:
LINK_FLAGS = ... -j"C:\some path\to directory_1\parser";"C:\some path\to directory_2\block"
我该如何解决这个问题?
UPD
我添加到 CMakeLists.txt:
...
set(PATH_1 ${PROJECT_SOURCE_DIR}/parser)
set(PATH_2 ${PROJECT_SOURCE_DIR}/block)
string(REPLACE "/" "\\" PATH_1 ${PATH_1})
string(REPLACE "/" "\\" PATH_2 ${PATH_2})
set(paths
"\"${PATH_1}\""
"\"${PATH_2}\"")
string(REPLACE ";" "\\;" paths "${paths}") # <--- added
message("-j${paths}")
target_link_options(${target} PRIVATE
"-j${paths}")
...
并在 build.ninja 中输出:
LINK_FLAGS = ... -j\"C:\some path\to directory_1\parser\";\"C:\some path\to directory_2\block\"
它仍然删除'\'符号