正如我在之前的一个问题中所说,我计划将Qt项目从VC ++移植到QtCreator。
该项目由4个子项目组成:其中3个是libs,最后一个是exe。 子项目是分层的,这意味着每个层都有编译和链接时间依赖于它下面的层。
文件的组织如下:
root
lib1
lib2
lib3
main
我已经从头开始在QtCreator中创建了每个子项目。每个文件夹都包含一个具有相同名称的专业文件(例如:lib1 - > lib1.pro)。使用这种方法,我已经构建了除最后一个必须链接可执行文件之外的所有项目。我收到链接器错误,我通过手动编辑专业文件并添加以下代码来修复:
LIBS += ../path/lib1.a \
../path/lib2.a \
../path/lib3.a
一切都很好,除了现在lib3抱怨它无法找到lib2和lib1中的符号。 Addind LIBS到lib2.pro文件不起作用。
我有一种感觉,我没有得到QtCreator与libs和可执行文件一起工作的方式。你如何组织这样一个项目,以便正确编译和链接?
答案 0 :(得分:4)
在解决了这个问题之后,我记得对于GCC工具链来说,链接器参数的顺序很重要。
反转LIBS条目就可以了。
答案 1 :(得分:3)
很高兴看到你找到了答案。您可能还想添加:
CONFIG += ordered
到根目录.pro文件(它仅在'SUBDIRS'配置文件中有效)。它强制qmake生成Makefile,它保留在所有情况下列出它们的顺序。