【问题标题】:cmake: get add_library() namescmake:获取 add_library() 名称
【发布时间】:2018-01-24 16:59:45
【问题描述】:

有没有办法获取所有add_library() 呼叫的名称?例如

add_library(lib1
  some.cpp
)

add_library(lib2
  some.cpp
)

add_library(lib3
  some.cpp
)

# And then somehow get in a variable MY_LIBRARIES_NAMES = lib1 lib2 lib3 

是否有任何 cmake 调用或变量可以做到这一点? (如果重要的话,我对 cmake 2.8 版感兴趣)

谢谢!

【问题讨论】:

    标签: cmake


    【解决方案1】:

    在较新版本的 CMake(>= 3.7 版)中,BUILDSYSTEM_TARGETS 目录属性:

    get_directory_property(MY_LIBRARIES_NAMES BUILDSYSTEM_TARGETS)
    

    对于旧版本的 CMake,您可以覆盖 add_library() 调用以收集目标列表:

    macro(add_library _target)
        _add_library(${_target} ${ARGN})
        set_property(GLOBAL APPEND PROPERTY GlobalTargetList ${_target})
    endmacro()
    
    ...
    
    get_property(_allTargets GLOBAL PROPERTY GlobalTargetList)
    message(STATUS "GlobalTargetList: ${_allTargets}")
    

    参考文献

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-07
      • 2018-07-10
      • 2020-06-08
      • 1970-01-01
      相关资源
      最近更新 更多