target_link_libraries 内的生成器表达式

Bra*_*ean 0 cmake

我接到一个特别的电话,要求target_link_libraries我开始工作。

target_link_libraries(
  Array
  $<$<CXX_COMPILER_ID:Clang>: c++abi>
  $<$<CXX_COMPILER_ID:GNU>: c++ c++abi c gcc_s gcc>
)
Run Code Online (Sandbox Code Playgroud)

它输出如下构建命令:

clang++ CMakeFiles/Array.dir/driver.cpp.o CMakeFiles/Array.dir/Array.cpp.o  -o Array $<1: -lc++abi> $<0: -lc++ -lc++abi -lc -lgcc_s -lgcc>
Run Code Online (Sandbox Code Playgroud)

Am I writing the generator expressions correctly or is the call to target_link_libraries wrong?

Bra*_*ean 5

所以我修复了它,将生成器放在引号中并用分号替换空格。

target_link_libraries(
  Array
  "$<$<CXX_COMPILER_ID:Clang>:c++abi>"
  "$<$<CXX_COMPILER_ID:GNU>:c++;c++abi;c;gcc_s;gcc>"
)
Run Code Online (Sandbox Code Playgroud)