CMake:用于检查目标是否具有 属性 的生成器表达式
CMake: generator expression to check if target has a property
如果目标具有给定的 属性,我如何签入生成器表达式?
我正在寻找像
这样的东西
$<TARGET_HAS_PROPERTY:tgt,property>
由于不存在的 属性 生成空字符串,您始终可以对空字符串进行字符串比较。这需要将 属性 设置为空字符串以外的值,如果设置了它,那么在特定情况下这种方法可能不起作用:
$<STREQUAL:$<TARGET_PROPERTY:tgt,property>,>
产生否定,所以
$<NOT:$<STREQUAL:$<TARGET_PROPERTY:tgt,property>,>>
生成您要查找的 bool 值。
例子
add_custom_target(test_print COMMAND ${CMAKE_COMMAND} -E echo $<IF:$<STREQUAL:$<TARGET_PROPERTY:MyTarget,CXX_STANDARD>,>,"CXX_STANDARD not set for target MyTarget","CXX_STANDARD set for target MyTarget">)
如果目标具有给定的 属性,我如何签入生成器表达式?
我正在寻找像
这样的东西$<TARGET_HAS_PROPERTY:tgt,property>
由于不存在的 属性 生成空字符串,您始终可以对空字符串进行字符串比较。这需要将 属性 设置为空字符串以外的值,如果设置了它,那么在特定情况下这种方法可能不起作用:
$<STREQUAL:$<TARGET_PROPERTY:tgt,property>,>
产生否定,所以
$<NOT:$<STREQUAL:$<TARGET_PROPERTY:tgt,property>,>>
生成您要查找的 bool 值。
例子
add_custom_target(test_print COMMAND ${CMAKE_COMMAND} -E echo $<IF:$<STREQUAL:$<TARGET_PROPERTY:MyTarget,CXX_STANDARD>,>,"CXX_STANDARD not set for target MyTarget","CXX_STANDARD set for target MyTarget">)