qmake:使用pkg-config中的标志(如果存在),否则使用默认值

时间:2015-12-22 02:27:13

标签: qt qmake pkg-config

在我的设置中,我想支持系统范围的Qt安装和自定义Qt安装。我可以使用pkg-config为我的系统范围安装获取正确的编译和链接标志:

CONFIG += link_pkgconfig
PKGCONFIG += Qt5Core

但是,如果pkg-config无法找到Qt5Core,则构建将失败并显示Project ERROR: Qt5Core development package not found

我想设置合理的默认值(例如/usr/local/qt5),而不是失败。它应该实现以下目标:

if pkg-config can find Qt5Core {
    PKGCONFIG += Qt5Core
} else {
    INCLUDEPATH += /usr/local/qt5/
    LIBS += -lQt5Core
}

如何在项目配置中完成此操作?

2 个答案:

答案 0 :(得分:3)

这有一个qmake函数: http://doc.qt.io/qt-5/qmake-test-function-reference.html#packagesexist-packages

packagesExist(Qt5Core) {
    PKGCONFIG += Qt5Core
} else {
    INCLUDEPATH += /usr/local/qt5/
    LIBS += -lQt5Core
}

答案 1 :(得分:1)

您可以使用executes the given command in a secondary shell. Succeeds if the command returns with a zero exit status; otherwise fails.

system内置测试功能
system(pkg-config --exists Qt5Core) {
    PKGCONFIG += Qt5Core
} else {
    INCLUDEPATH += /usr/local/qt5/
    LIBS += -lQt5Core
}