在静态库中使用框架

时间:2018-02-20 15:40:34

标签: macos qt cmake frameworks dynamic-linking

我有一个生成为.a文件的库(要静态链接)。在那里,我想包括Qt框架(QtCore.framework),因为我在OSX上。那可能吗?我怎么能用cmake来做呢?

我的尝试:

在CMakeLists.txt中我有

FIND_LIBRARY(QTCORE_LIBRARY NAMES QtCore
             HINTS "${CMAKE_SOURCE_DIR}/osx/frameworks")

然后我打印变量$ {QTCORE_LIBRARY},它给出正确的路径。

然后在src / CMakeLists.txt(我的资源来源)我链接库 TARGET_LINK_LIBRARIES(libname $$ {QTCORE_LIBRARY})

然而,当我启动编辑时,它会抱怨因为找不到

  

致命错误:找不到'QtGlobal'文件

我已经检查过,QtCore.framework包含QtGlobal标题

编辑:如果有人有同样的问题我找到了解决方案。 我需要在项目包含目录

中添加“$ {QTCORE_LIBRARY} / Headers”

提前致谢并问候

1 个答案:

答案 0 :(得分:2)

为什么不使用CMake" config.cmake"由Qt5提供?
类似的东西:

 # Qt Setting
 set(CMAKE_AUTOMOC ON)
 set(CMAKE_AUTOUIC ON)
 set(CMAKE_AUTORCC ON)
 find_package(Qt5  REQUIRED COMPONENTS Core Gui Widgets)
 ...
 target_link_libraries(libname Qt5::Core Qt5::Gui Qt5::Widgets)
  

CMake可以找到并使用Qt5库。 [...]使用Qt5附带的“配置文件包”找到Qt5库

src:https://cmake.org/cmake/help/latest/manual/cmake-qt.7.html

  

为了使find_package成功,必须在CMAKE_PREFIX_PATH下面找到Qt 5,或者必须在CMake缓存中将Qt5_DIR设置为Qt5WidgetsConfig.cmake文件的位置。使用CMake的最简单方法是将CMAKE_PREFIX_PATH环境变量设置为Qt 5的安装前缀。

src:http://doc.qt.io/qt-5/cmake-manual.html