CMake:有没有办法获得属于包的导入目标列表

时间:2017-08-03 08:57:21

标签: cmake package

有时候我可以获得属于包的导入目标列表。是否有一个变量来保存它们?

这可以让我写这样的东西

find_package(Qt5 CONFIG REQUIRED)
message("Imported Qt5 targets: ${Qt5_IMPORTED_TARGETS}") # speculative code

根据我目前的知识,我必须依赖包的文档来给我所有导入目标的名称。从变量或属性中读取它们会更容易。

1 个答案:

答案 0 :(得分:1)

并非完全是您要的,但对于Qt5,您可以做到:

cmake_minimum_required(VERSION 3.14)

project(so)

find_package(Qt5 COMPONENTS Core Widgets REQUIRED)

get_cmake_property(_variableNames VARIABLES)
foreach(_variableName ${_variableNames})
  if(_variableName MATCHES "^Qt5.*LIBRARIES")
      message(STATUS "${_variableName}")
      message(STATUS "\t${${_variableName}}")
  endif()
endforeach()

示例输出:

-- Qt5Core_LIBRARIES
--  Qt5::Core
-- Qt5Gui_EGL_LIBRARIES
--  Qt5::Gui_EGL
-- Qt5Gui_LIBRARIES
--  Qt5::Gui
-- Qt5Gui_OPENGL_LIBRARIES
--  Qt5::Gui_GL
-- Qt5Widgets_LIBRARIES
--  Qt5::Widgets
-- Configuring done
-- Generating done
-- Build files have been written to: /path/to/build

注意事项:人们需要知道组件名称。