c-将libusb库添加到osx中的Qt项目

在过去的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'
最佳答案
使我的评论正确答案;这不是使用的正确语法:

LIBS += -L/usr/local/lib -libusb-1.0.a
LIBS += -L<libusb.h>

合适的是这样的:

LIBS = -L /usr/local/lib -lusb-1.0

要么

LIBS = -l /完整/路径/到/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的两个屏幕截图:

单击项目源树导航器左侧的项目名称,然后选择添加库.然后将出现第一个屏幕截图,您可以选择外部选项,然后可以看到第二个.

不用说,在完成这些更改之后,您将需要运行qmake才能在所需平台上生成相应的Makefile.

转载注明原文:c-将libusb库添加到osx中的Qt项目 - 代码日志