问题描述
我有这个 CMakeLists.txt 片段:
if (TARGET bar)
target_link_libraries(foo PUBLIC bar)
else()
target_link_libraries(foo PUBLIC baz)
endif()
我想我可以用 CMake 的生成器表达式缩短这个时间。我该怎么做?
我试过了:
target_link_library(foo PUBLIC $<IF:$<TARGET_EXISTS:bar>,bar,baz> )
但实际上,foo
不会出现指向任一库的链接。
解决方法
看似有效但不完全相同的逻辑是:
target_link_library(foo PUBLIC
$<TARGET_NAME_IF_EXISTS:bar>
$<TARGET_NAME_IF_EXISTS:baz>
)