我在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
。
答案 0 :(得分:1)
由于您似乎在使用Linux,因此最好将软件包与您的发行版一起保留。安装软件包将静态库带入系统将更加“香草”。
但是,如果您希望坚持项目内部构建原则,我建议不要禁用阴影构建并创建具有其自身限制的其他变通方法。
例如,您可以使用$$OUT_PWD variable来实现此目的,但通常,您还需要在组件之间指定目标依赖关系。
所以,你会写这样的东西:
LIBS += -L$$OUT_PWD/qscintilla/Qt4Qt5 -lqscintilla2
请根据您的目录布局进行调整。
答案 1 :(得分:0)
您还应该添加以下行:
PRE_TARGETDEPS += qscintilla/Qt4Qt5/libqscintilla2.a
到您的.pro文件,以便静态链接库。
答案 2 :(得分:0)
管理使其工作:在QtCreator上,单击左侧窗格中的“项目”,这将打开一个选项卡,允许您编辑构建/运行/样式选项。在Build / General部分,禁用“Shadow build”。这将在原始项目目录上构建项目。
编辑:请参阅@ LaszloPapp的答案以获得更好的解决方案。