Как собрать библиотеку 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.