我正在编写一个CMake函数,它接受一个目标名称作为参数。我想检测它是静态库类型还是共享库类型,如果是共享库,则将其复制到指定目录。
我可以正确处理通过add_executable()
创建的目标,add_library()
直接提供源代码。我可以用以下方式处理它们:
if(TARGET ${targetName})
message(STATUS "this is an ordinary target")
endif()
存在导入别名目标,但无法确定。我想用
if(ALIASES_TARGET ${targetName})
message(STATUS "this is an aliases target")
endif()
但这不管用。
注意:CMake系统将创建一些“垃圾编码”命名目标,似乎代表分号字符;
,我将忽略它。
如何确定给定的目标名称是否为别名目标?
function(my_fancy_function targetName dstDir)
if(TARGET ${targetName})
message(STATUS "this is an ordinary target")
endif()
if(ALIASES_TARGET ${targetName}) # how to change this line?
message(STATUS "this is an aliases target")
endif()
endfunction()
1条答案
按热度按时间xeufq47z1#
使用the
ALIASED_TARGET
target property。从文档:如果这是别名目标,则此属性包含别名目标的名称。
前任