C++ Qt外部库包括内部自定义库

C++ Qt外部库包括内部自定义库,c++,qt,shared-libraries,C++,Qt,Shared Libraries,我有一个Qt项目,看起来像这样: myLib/ myLib.pro (some *.h, *.cpp) myProject/ myProject.pro (some *.h, *.cpp) myLib.pro包括一些使用INCLUDEPATH+=和LIBS+=的外部库(例如Eigen) myProject依赖于myLib,因此我使用添加到myProject.pro的Qt向导添加了依赖项,类似于: unix|win32: LIBS += -L$$OUT_PWD/../my

我有一个Qt项目,看起来像这样:

myLib/
   myLib.pro
   (some *.h, *.cpp)
myProject/
   myProject.pro
   (some *.h, *.cpp)
myLib.pro包括一些使用
INCLUDEPATH+=
LIBS+=
的外部库(例如Eigen) myProject依赖于myLib,因此我使用添加到myProject.pro的Qt向导添加了依赖项,类似于:

unix|win32: LIBS += -L$$OUT_PWD/../myLib/ -lmyLib
INCLUDEPATH += $$PWD/../myLib
DEPENDPATH += $$PWD/../myLib
问题是,当我编译库时,它可以工作,但是当我尝试编译项目时,我会遇到如下错误

Eigen/Core:没有这样的文件或目录

因为在我的项目的源文件中,我包含了来自我自己库的一些头,其中包括来自外部库的一些头

我知道解决这个问题的唯一方法是将myLib.pro中的所有include和链接复制/粘贴到myProject.pro。有更好的方法吗?
我在想,也许每个外部库都有一个*.pri,并在两个*.pro中都包含这些*.pri。但这并不完全令人满意

编辑:
我忘了提到myLib是一个共享库

我要检查的第一件事是,您实际上需要在myProject中使用这些头。仔细考虑myLib的API及其要求。如果要传递特征类型和矩阵,则需要将它们添加到include路径中,并且.pri文件可能会对此有所帮助。您可能还想考虑在编译前的头中放置一些类似于特征的东西。如果没有,那么您应该重新排列头文件,以确保它们只拉入特定头文件所需的内容,并将尽可能多的包含内容移动到源文件中。同样,这将极大地帮助您缩短编译时间

我认为您没有提到myLib是共享库还是静态库。如果它是一个静态库,那么是的,您需要将
myProject
链接到
myLib
所依赖的所有内容,但另一方面是部署变得更容易,对该库的函数调用变得更有效。如果它是一个共享库,那么您只需要链接到该库