如何将 CMake 生成器表达式拆分为多行?

Arn*_*rah 5 cmake

假设我有如下代码:

target_compile_options(${PROJECT_NAME} 
    PRIVATE
        $<$<CXX_COMPILER_ID:MSVC>:...Options...>
        $<$<OR:$<CXX_COMPILER_ID:GNU>,$<CXX_COMPILER_ID:Clang>,$<CXX_COMPILER_ID:AppleClang>>:...Options...>
)
Run Code Online (Sandbox Code Playgroud)

很明显,第二行(检查编译器是 GCC、Clang 还是 AppleClang)很长。为了将其缩短为多行,我尝试了以下操作:

target_compile_options(${PROJECT_NAME} 
    PRIVATE
        $<$<CXX_COMPILER_ID:MSVC>:...Options...>
        $<$<OR:$<CXX_COMPILER_ID:GNU>,
            $<CXX_COMPILER_ID:Clang>,
            $<CXX_COMPILER_ID:AppleClang>>:...Options...>
)
Run Code Online (Sandbox Code Playgroud)

但是,在运行 CMake 时,我发现这不起作用。我收到以下错误:

CMake Error at CMakeLists.txt:23 (target_compile_options):
  Error evaluating generator expression:
    $<OR:$<CXX_COMPILER_ID:GNU>,;$<CXX_COMPILER_ID:Clang>,;$<CXX_COMPILER_ID:AppleClang>>
  Parameters to $<OR> must resolve to either '0' or '1'.
Run Code Online (Sandbox Code Playgroud)

很明显,CMake 没有意识到生成器表达式的下一部分在连续行上,而不是在同一行上。因为我想保持可读性,所以我不想诉诸第一个选项。我意识到我可以string(CONCAT ...)把结果放在一个变量中,但我想避免这种情况,因为我的整个项目中只有一个目标,这会使变量变得毫无用处。

如何将这样的生成器表达式拆分为多行以保持可读性?