我想创建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宏进行一些更改来完成此操作,但是我不确定。