CMake:有没有一种方法可以获取属于软件包的导入目标列表

问题描述 投票:13回答:1

有时我希望我可以得到属于软件包的导入目标的列表。是否有保存它们的变量?

这可以让我写这样的东西

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

根据我目前的知识,我必须依靠软件包的文档为我提供所有导入目标的名称。从变量或属性读取它们会更容易。

cmake package
1个回答
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

使用方法时要小心:人们需要知道组件名称。

© www.soinside.com 2019 - 2024. All rights reserved.