QtLibrary в не Qt приложении
От: qtprogger  
Дата: 03.06.20 13:56
Оценка:
Как собрать библиотеку libqlibrary.so так, чтобы при сборке некоторого не Qt приложения, использующего эту библиотеку, оно не требовало подключать заголовочные файлы Qt?

Вот библиотечка, сгенерирована QTCreator.
$ cat qlibrary.h 
#ifndef QLIBRARY_H
#define QLIBRARY_H

#include "qlibrary_global.h"

class QLIBRARYSHARED_EXPORT Qlibrary
{

public:
    Qlibrary();
    int getNumber() {return mNumber;}
private:
    int mNumber {1};
};

#endif // QLIBRARY_H


$ cat qlibrary.cpp 
#include "qlibrary.h"


Qlibrary::Qlibrary()
{
}

После сборки и установки библиотеки libqlibrary.so в системе хотелось бы в стороннем проекте при компиляции не таскать заголовочные файлы Qt:
$ cat main.cpp 
#include <iostream>
#include "qlibrary.h"

int main()
{
    Qlibrary q;
    char ch = '';
    while(ch != 'f')
    {
        std::cout << q.getNumber() << std::endl;
    std::cout << "press key 'f' for finish\n";
    std::cout << "key: ";
    std::cin >> ch;
    }
}


$ c++ main.cpp -lqlibrary
In file included from qlibrary.h:4:0,
                 from main.cpp:2:
qlibrary_global.h:4:10: fatal error: QtCore/qglobal.h: No such file or directory
 #include <QtCore/qglobal.h>
          ^~~~~~~~~~~~~~~~~~
compilation terminated.



Какие последствия будут, если я удалю макрос QLIBRARYSHARED_EXPORT
#ifndef QLIBRARY_H
#define QLIBRARY_H

class Qlibrary
{

public:
    Qlibrary();
    int getNumber() {return mNumber;}
private:
    int mNumber {1};
};

#endif // QLIBRARY_H


Если существуют решения какие-то подобной проблемы (Qt как библиотека для не Qt проекта), интересно было ознакомится с best practice.
Отредактировано 03.06.2020 14:03 qtprogger (Qt, Library) . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.