有没有一种方法可以添加给定文件夹中的所有库,而无需将每个库都添加到Qt项目文件中的LIBS变量中。

我已将所有库(DLL(win)或SO(unix))连同头文件放在一个目录(MYLIBS)中,并尝试了以下操作:

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

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

最佳答案

您可以使用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,)
    }
}

07-24 14:05