Я хочу создать разделяемую библиотеку 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, но я не уверен.