0

我的 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\"

它仍然删除'\'符号

4

0 回答 0