2

我在 Linux 上使用 QtCreator 3.0.1 和 Qt 5.2.1 时遇到问题。我正在尝试使用 QtCreator 内置的“构建”函数编译我的项目,我想它会运行qmake project.pro,然后make. 我的项目使用 QScintilla,我已将其编译为静态库 ( .a),并包含在我的项目目录中的qscintilla/Qt4Qt5.

编译完成后,编译输出面板显示如下:

/usr/bin/ld: cannot find -lqscintilla2
collect2: error: ld returned 1 exit status

我的.pro文件包含:

LIBS += -Lqscintilla/Qt4Qt5 -lqscintilla2

但是,通过终端模拟器运行qmake然后make在项目的根目录上运行完美,并且项目编译和链接成功。我已仔细检查该qscintilla/Qt4Qt5目录是否包含该文件libqscintilla2.a

4

3 回答 3

1

由于您似乎使用的是 Linux,因此最好将软件包留在您的发行版中。安装将静态库引入系统的软件包会更“香草”。

但是,如果您希望坚持项目内构建原则,我建议不要禁用影子构建并创建其他具有自身局限性的解决方法。

例如,您可以为此目的使用$$OUT_PWD 变量,但通常,您还需要指定组件之间的目标依赖关系。

所以,你会写这样的东西:

LIBS += -L$$OUT_PWD/qscintilla/Qt4Qt5 -lqscintilla2

请根据您的目录布局进行调整。

于 2014-02-24T18:31:48.813 回答
0

设法使其工作:在 QtCreator 上,单击左侧窗格上的“项目”,这将打开一个选项卡,允许您编辑构建/运行/样式选项。在 Build/General 部分,禁用“Shadow build”。这将在原始项目目录上构建项目。

编辑:请参阅@LaszloPapp 的答案以获得更好的解决方案。

于 2014-02-24T18:27:40.733 回答
0

您还应该添加以下行:

PRE_TARGETDEPS += qscintilla/Qt4Qt5/libqscintilla2.a

到您的 .pro 文件,以便静态链接库。

于 2014-02-24T06:06:14.660 回答