在过去的16个小时里,我一直试图将libusb库附加到Qt项目上,但没有取得多大成功。我很感激有关此事的任何意见,这令人沮丧。
.pro文件是这样的:
TEMPLATE = app
CONFIG += console
CONFIG -= app_bundle
CONFIG -= qt
SOURCES += main.cpp
INCLUDEPATH +=/usr/local/include/libusb-1.0
LIBS += -L/usr/local/lib -libusb-1.0.a
LIBS += -L<libusb.h>
源代码:
#include <iostream>
#include <libusb.h>
using namespace std;
int main()
{
cout << "Hello World!" << endl;
return 0;
}
编译器输出:
13:01:50: Running steps for project lallala...
13:01:50: Configuration unchanged, skipping qmake step.
13:01:50: Starting: "/usr/bin/make" -w
make: Entering directory `/Users/MAXIMUS/Documents/workspace/lallala-build-Desktop_Qt_5_0_0_clang_64bit_SDK-Debug'
/Users/MAXIMUS/Qt5.0.0/5.0.0/clang_64/bin/qmake -spec macx-g++42 CONFIG+=debug CONFIG+=x86_64 CONFIG+=declarative_debug CONFIG+=qml_debug -o Makefile ../lallala/lallala.pro
make: Leaving directory `/Users/MAXIMUS/Documents/workspace/lallala-build-Desktop_Qt_5_0_0_clang_64bit_SDK-Debug'
make: Entering directory `/Users/MAXIMUS/Documents/workspace/lallala-build-Desktop_Qt_5_0_0_clang_64bit_SDK-Debug'
g++-4.2 -headerpad_max_install_names -mmacosx-version-min=10.6 -o lallala main.o -L/usr/local/lib -libusb-1.0.a -L<libusb.h>
/bin/sh: -c: line 0: syntax error near unexpected token `newline'
/bin/sh: -c: line 0: `g++-4.2 -headerpad_max_install_names -mmacosx-version-min=10.6 -o lallala main.o -L/usr/local/lib -libusb-1.0.a -L<libusb.h> '
make: *** [lallala] Error 2
make: Leaving directory `/Users/MAXIMUS/Documents/workspace/lallala-build-Desktop_Qt_5_0_0_clang_64bit_SDK-Debug'
13:01:50: The process "/usr/bin/make" exited with code 2.
Error while building/deploying project lallala (kit: Desktop Qt 5.0.0 clang 64bit (SDK))
When executing step 'Make'
答案 0 :(得分:4)
将我的评论形成一个正确的答案;这不是正确的语法:
LIBS += -L/usr/local/lib -libusb-1.0.a
LIBS += -L<libusb.h>
正确的是:
LIBS + = -L / usr / local / lib -lusb-1.0
或
LIBS + = -l / full / path / to / libusb-1.0.a
您可以在初始尝试中删除第二行LIBS
,因为您已经在前者中指定了路径,并且在其中放置“include”语句无论如何都不合理。因此,这是您可以为完整的.pro文件编写的内容:
TEMPLATE = app
CONFIG += console
CONFIG -= app_bundle
CONFIG -= qt
SOURCES += main.cpp
INCLUDEPATH +=/usr/local/include/libusb-1.0
LIBS += -L/usr/local/lib -lusb-1.0
这不是Qt特定的,只是通用链接问题:-lfoo
扩展到$(prefix)foo$(suffix)
,其中前缀和后缀根据平台自动计算出来。也就是说,前缀在您的情况下为lib
,在Unix上后缀为.a
或.so
,在Mac上可能为.dylib
等。
如果可以建立,您可能希望查看pkg-config支持。在这种情况下,你会写一些类似于我们在QtSerialPort中所做的事情:
CONFIG += link_pkgconfig
PKGCONFIG += libudev
另一种选择是通过QtCreator IDE或您可能使用的类似IDE添加GUI。通常在“链接器”部分中有一个选项可以添加库。以下是我的QtCreator的两个截图:
单击项目源树导航器左侧的项目名称,然后选择Add Library
。然后会出现第一个屏幕截图,您可以选择外部选项,然后您可以看到第二个。
毋庸置疑,您需要在这些更改后运行qmake,以在您所需的平台上生成相应的Makefile。
答案 1 :(得分:0)
语法如下: -L%LIBRARY_PATH%使特定路径可见并且 -l%LIBRARY_NAME%以链接位于可见路径中的特定库
所以我想这应该有用(我认为你不需要.a扩展名):
LIBS + = -L / usr / local / lib -llibusb-1.0
我不知道这会做什么: LIBS + = -L 所以我想我会删除它。
修复运行qmake 后再构建...
希望它有所帮助...