Visual c++ 如何在cmake的COMPILE\u FLAGS属性中转义分号?

Visual c++ 如何在cmake的COMPILE\u FLAGS属性中转义分号?,visual-c++,preprocessor,escaping,cmake,Visual C++,Preprocessor,Escaping,Cmake,我需要在msvc生成器的预处理器定义中得到以下结果: MYPATH=\"d:\\;.\\Lib\" 但当我在set_source_files_properties中使用以下转义序列时: set_source_files_properties(source.c PROPERTIES COMPILE_FLAGS "-DMYPATH=\\\"d:\\\;.\\\\Lib\\\"") 生成的结果是:MYPATH=\“d:\”;“\Lib\” 请注意双引号分号。是否有允许使用不带引号的分号的引号解决方

我需要在msvc生成器的预处理器定义中得到以下结果:

MYPATH=\"d:\\;.\\Lib\"
但当我在set_source_files_properties中使用以下转义序列时:

set_source_files_properties(source.c PROPERTIES COMPILE_FLAGS "-DMYPATH=\\\"d:\\\;.\\\\Lib\\\"")
生成的结果是:MYPATH=\“d:\”;“\Lib\”


请注意双引号分号。是否有允许使用不带引号的分号的引号解决方法?

AFAIR,cmake treat;作为列表分隔符,它的行为方式与文档中的属性相同

属性[value1[value2…]

可能您最好尝试类似的方法—将其设为字符串变量,然后尝试替换它

set(MY_PATH "\"d:\\\;.\\\\Lib\\\"")
set_source_files_properties(source.c PROPERTIES COMPILE_FLAGS ${MY_PATH})
嗯,, 谢尔盖