Ошибка при компиляции проекта CMake со статической библиотекой подпроекта с помощью QCoreApplication ⇐ C++
Ошибка при компиляции проекта CMake со статической библиотекой подпроекта с помощью QCoreApplication
Я пытаюсь скомпилировать проект со статической библиотекой подпроекта.
Проблема возникает, когда я добавляю #include QCoreApplication в cglib.h. Когда я помещаю его в cglib.cpp, ошибок нет. И, конечно, если библиотека скомпилировалась как самостоятельный проект, тоже все ок.
Я не хочу включать какие-либо библиотеки Qt в основной проект, я просто хочу использовать их в библиотеке подпроекта. Я знаю, что нужно заголовкам для включения информации о классе в main.cpp.
Как избежать этой ошибки зависимостей библиотек?
CMakeLists.txt
cmake_minimum_required (ВЕРСИЯ 3.5) проект (cg_server ЯЗЫКИ CXX) установить (CMAKE_CXX_STANDARD 17) установить (CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra") установить (APP_ID CGServer) включить(cmake/common.cmake) включить(cmake/models.cmake) включить(cmake/fcgi.cmake) включить(cmake/validators.cmake) включить(cmake/controllers.cmake) add_executable(${APP_ID} ${APP_SOURCES} main.cpp ) find_package (ТРЕБУЕТСЯ OpenSSL) #sudo apt install libssl-dev libfcgi-dev libpqxx-dev libjsoncpp-dev libmemcached-dev libcurl4-openssl-dev libv8-dev postgresql add_subdirectory(libs/cglib) target_link_libraries(${APP_ID} ЧАСТНЫЙ ФКГИ jsoncpp pthread завиток кэширование памяти stdc++fs pqxx ПК OpenSSL::Крипто cglib ) libs/cglib/CMakeLists.txt
cmake_minimum_required (ВЕРСИЯ 3.14) проект (cglib ВЕРСИЯ 1.0.0 ЯЗЫКИ CXX ) установить (CMAKE_AUTOUIC ON) установить (CMAKE_AUTOMOC ON) установить (CMAKE_AUTORCC ON) установить (CMAKE_CXX_STANDARD 17) установить (CMAKE_CXX_STANDARD_REQUIRED ON) find_package (ИМЯ QT Qt6 НЕОБХОДИМЫЕ КОМПОНЕНТЫ Qt5 Core Qml) find_package(Qt${QT_VERSION_MAJOR} НЕОБХОДИМЫЕ КОМПОНЕНТЫ Core Qml) add_library (cglib STATIC cglib.h cglib.cpp ) target_link_libraries(cglib ЧАСТНЫЙ Qt${QT_VERSION_MAJOR}::Core Qt${QT_VERSION_MAJOR}::Qml ) target_compile_definitions (cglib ЧАСТНАЯ CGLIB_LIBRARY) main.cpp
#include "include/common/app.h" #include "libs/cglib/cglib.h" int main(int argc, char** argv) { тест Cglib; тест.тест(); Приложение *app = App::instance(); if(app->init(str::fromCommandLine(argc, argv))){ вернуть приложение-> запустить(); } } cglib.h
#ifndef CGLIB_H #define CGLIB_H // #include ОШИБКА ЗДЕСЬ #include класс Cglib { публика: Cглиб(); ~Cglib(); публика: std::строковый тест(); }; #endif // CGLIB_H cglib.cpp
#include "cglib.h" #include #include #include #include Cglib::Cglib() { интервал арг; символ **argv = nullptr; Приложение QCoreApplication (argc, argv); //требуется для QJSEngine } Cglib::~Cglib() { } std::string Cglib::test() { QJSEngine _двигатель; QJSValue Three = _engine.evaluate("1 + 2"); std::cout
Я пытаюсь скомпилировать проект со статической библиотекой подпроекта.
Проблема возникает, когда я добавляю #include QCoreApplication в cglib.h. Когда я помещаю его в cglib.cpp, ошибок нет. И, конечно, если библиотека скомпилировалась как самостоятельный проект, тоже все ок.
Я не хочу включать какие-либо библиотеки Qt в основной проект, я просто хочу использовать их в библиотеке подпроекта. Я знаю, что нужно заголовкам для включения информации о классе в main.cpp.
Как избежать этой ошибки зависимостей библиотек?
CMakeLists.txt
cmake_minimum_required (ВЕРСИЯ 3.5) проект (cg_server ЯЗЫКИ CXX) установить (CMAKE_CXX_STANDARD 17) установить (CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra") установить (APP_ID CGServer) включить(cmake/common.cmake) включить(cmake/models.cmake) включить(cmake/fcgi.cmake) включить(cmake/validators.cmake) включить(cmake/controllers.cmake) add_executable(${APP_ID} ${APP_SOURCES} main.cpp ) find_package (ТРЕБУЕТСЯ OpenSSL) #sudo apt install libssl-dev libfcgi-dev libpqxx-dev libjsoncpp-dev libmemcached-dev libcurl4-openssl-dev libv8-dev postgresql add_subdirectory(libs/cglib) target_link_libraries(${APP_ID} ЧАСТНЫЙ ФКГИ jsoncpp pthread завиток кэширование памяти stdc++fs pqxx ПК OpenSSL::Крипто cglib ) libs/cglib/CMakeLists.txt
cmake_minimum_required (ВЕРСИЯ 3.14) проект (cglib ВЕРСИЯ 1.0.0 ЯЗЫКИ CXX ) установить (CMAKE_AUTOUIC ON) установить (CMAKE_AUTOMOC ON) установить (CMAKE_AUTORCC ON) установить (CMAKE_CXX_STANDARD 17) установить (CMAKE_CXX_STANDARD_REQUIRED ON) find_package (ИМЯ QT Qt6 НЕОБХОДИМЫЕ КОМПОНЕНТЫ Qt5 Core Qml) find_package(Qt${QT_VERSION_MAJOR} НЕОБХОДИМЫЕ КОМПОНЕНТЫ Core Qml) add_library (cglib STATIC cglib.h cglib.cpp ) target_link_libraries(cglib ЧАСТНЫЙ Qt${QT_VERSION_MAJOR}::Core Qt${QT_VERSION_MAJOR}::Qml ) target_compile_definitions (cglib ЧАСТНАЯ CGLIB_LIBRARY) main.cpp
#include "include/common/app.h" #include "libs/cglib/cglib.h" int main(int argc, char** argv) { тест Cglib; тест.тест(); Приложение *app = App::instance(); if(app->init(str::fromCommandLine(argc, argv))){ вернуть приложение-> запустить(); } } cglib.h
#ifndef CGLIB_H #define CGLIB_H // #include ОШИБКА ЗДЕСЬ #include класс Cglib { публика: Cглиб(); ~Cglib(); публика: std::строковый тест(); }; #endif // CGLIB_H cglib.cpp
#include "cglib.h" #include #include #include #include Cglib::Cglib() { интервал арг; символ **argv = nullptr; Приложение QCoreApplication (argc, argv); //требуется для QJSEngine } Cglib::~Cglib() { } std::string Cglib::test() { QJSEngine _двигатель; QJSValue Three = _engine.evaluate("1 + 2"); std::cout
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Как получить пружинные бобы из другого модуля/подпроекта без декларации зависимости в градли
Anonymous » » в форуме JAVA - 0 Ответы
- 10 Просмотры
-
Последнее сообщение Anonymous
-