在Qt中创建公共共享库

时间:2018-10-03 12:13:53

标签: c++ qt shared-libraries

我想创建Qt共享库,该库可以在非Qt项目中连接。有可能吗?

这是我的意思:

我已经在Qt Creator中创建了2个(空白)项目-基于Qt-qmake的共享库和非Qt CMake应用程序,这些项目应该链接共享库中的一些代码。我需要能够链接共享库而不需要安装Qt库(共享库可能会用static-qt编译)。

在空白项目中,我有dip-client_global.h文件(我假设这是应该在 include 文件夹中可见的文件),取决于Qt。

/** Shared-Client/dip-client_global.h **/
#ifndef DIPCLIENT_GLOBAL_H
#define DIPCLIENT_GLOBAL_H

#include <QtCore/qglobal.h>

#if defined(DIPCLIENT_LIBRARY)
#  define DIPCLIENTSHARED_EXPORT Q_DECL_EXPORT
#else
#  define DIPCLIENTSHARED_EXPORT Q_DECL_IMPORT
#endif

#endif // DIPCLIENT_GLOBAL_H

当我要编译和链接CMake中的应用程序时,必须使用qglobal.h头链接QtCore,因此我的CMake必须如下所示:

/** Test-Client/CMakeLists.txt **/
cmake_minimum_required(VERSION 2.8)

project(Test-Client)

find_package(Qt5Core REQUIRED)

include_directories(${CMAKE_SOURCE_DIR}/include)
link_directories(${CMAKE_SOURCE_DIR}/lib)

add_executable(${PROJECT_NAME} "main.c")

target_link_libraries(${PROJECT_NAME} Qt5::Core DIP-Client)

是否可以在全局包含文件中构建没有Qt的Qt共享库,所以我不必在CMake项目中包括Qt5Core?我认为可以通过对Q_DECL_IMPORT宏进行一些更改来完成此操作,但是我不确定。

0 个答案:

没有答案