将目录中存储的所有外部库添加到Qt项目中

时间:2014-07-08 15:22:24

标签: c++ qt shared-libraries wildcard qmake

是否可以添加来自给定文件夹的所有库,而无需将每一个库添加到Qt项目文件中的LIBS变量。

我已将所有库(DLL(win)或SO(unix))与头文件一起放在一个目录(MYLIBS)中并尝试这样的事情:

LIBS *= -L$$PWD/MYLIBS -l*
INCLUDEPATH += $$PWD/MYLIBS
DEPENDPATH += $$PWD/MYLIBS

它没有使用错误消息cannot find -l*qmake是否可以在创建Makefile时使用通配符?

1 个答案:

答案 0 :(得分:8)

您可以使用filesbasenamereplace功能获取所需内容:

LIBS *= -L$$PWD/MYLIBS
win32 {
    SHARED_LIB_FILES = $$files($$PWD/MYLIBS/*.dll)
    for(FILE, SHARED_LIB_FILES) {
        BASENAME = $$basename(FILE)
        LIBS += -l$$replace(BASENAME,.dll,)
    }
}
unix {
    SHARED_LIB_FILES = $$files($$PWD/MYLIBS/*.so)
    for(FILE, SHARED_LIB_FILES) {
        BASENAME = $$basename(FILE)
        LIBS += -l$$replace(BASENAME,.so,)
    }
}