6

就像我在上一个问题中所说的那样,我计划将 Qt 项目从 VC++ 移植到 QtCreator。

该项目由 4 个子项目组成:其中 3 个是库,最后一个是 exe。子项目是分层的,这意味着每一层都具有与其下层的编译和链接时间依赖性。

文件组织如下:

root
  lib1
  lib2
  lib3
  main

我从头开始在 QtCreator 中创建了每个子项目。每个文件夹都包含一个同名的 pro 文件(例如:lib1 -> lib1.pro)。使用这种方法,我已经构建了所有项目,除了最后一个必须链接可执行文件的项目。我遇到了链接器错误,我通过手动编辑 pro 文件并添加以下代码来修复这些错误:

LIBS +=  ../path/lib1.a \
   ../path/lib2.a \
   ../path/lib3.a

一切都很好,除了现在 lib3 抱怨它找不到来自 lib2 和 lib1 的符号。将 LIBS 添加到 lib2.pro 文件不起作用。

我有一种感觉,我没有得到 QtCreator 使用库和可执行文件的方式。您将如何组织这样一个项目以使其正确编译和链接?

4

2 回答 2

4

在解决了一些问题之后,我记得对于 GCC 工具链,链接器参数的顺序很重要。

反转 LIBS 条目就可以了。

于 2009-06-30T14:27:12.353 回答
3

很高兴看到你找到了答案。您可能还想添加:

CONFIG += ordered

到您的根目录 .pro 文件(它仅在“SUBDIRS”配置文件中有效)。它强制 qmake 生成 Makefile,这些 Makefile 在所有情况下都会保留您列出它们的顺序。

于 2009-06-30T14:50:31.683 回答