2014-11-05 54 views
3

我有一个Qt工程,看起来像这样:Qt的外部库包含自定义库中

myLib/ 
    myLib.pro 
    (some *.h, *.cpp) 
myProject/ 
    myProject.pro 
    (some *.h, *.cpp) 

myLib.pro包括一些外部库使用INCLUDEPATH +=LIBS +=(例如本征) myProject的依赖于MyLib中,所以我添加了Qt的向导,加入到myProject.pro类似的依赖性:

unix|win32: LIBS += -L$$OUT_PWD/../myLib/ -lmyLib 
INCLUDEPATH += $$PWD/../myLib 
DEPENDPATH += $$PWD/../myLib 

问题是,当我编译它的作品库,但是当我尝试编译项目,我得到这样的错误

Eigen/Core: No such file or directory

,因为在我的项目的源文件包括我从我自己的图书馆一些头,其中包括来自外部库的一些头。

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

编辑: 我忘了提MYLIB是共享库

回答

0

我会检查的第一件事是,你实际上需要在这些myProject的头。仔细考虑myLib的API以及需要什么。如果您传递的是特征类型和矩阵,那么您需要将它们添加到包含路径中,并且.pri文件可能对此有帮助。你也可以考虑在预编译头文件中加入Eigen这样的东西。如果不是,那么你应该考虑重新整理你的头文件,以确保它们只是提取特定头文件所需的内容,并尽可能多地将其包含到源文件中。再次,这将大大有助于您的编译时间。

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