Создайте общую общую библиотеку в Qt - PullRequest
0 голосов
/ 03 октября 2018

Я хочу создать разделяемую библиотеку Qt, которая может подключаться в не-Qt проекте.Возможно ли это?

Вот моя точка зрения:

Я создал 2 (пустых) проекта в Qt Creator - общая библиотека на основе Qt-qmake и приложение не-Qt CMake, которое должно связать некоторыекод из моей общей библиотеки.Мне нужно иметь возможность связывать эту разделяемую библиотеку без необходимости установки Qt-библиотек (совместно используемая библиотека, вероятно, будет скомпилирована с использованием static-qt).

В пустом проекте у меня есть файл dip-client_global.h (я предполагаю, что этофайл, который должен быть виден в , включает папку), который зависит от 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, необходимо связать QtCore, потому что qglobal.h заголовок, поэтому мой 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 в глобальном включаемом файле, поэтому мне не нужно включать Qt5Core в проект CMake?Я думаю, что это можно сделать с некоторыми изменениями в макросах Q_DECL_IMPORT, но я не уверен.

...