Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Qt qmake:如果存在pkg config中的标志,则使用它们,否则使用默认值_Qt_Qmake_Pkg Config - Fatal编程技术网

Qt qmake:如果存在pkg config中的标志,则使用它们,否则使用默认值

Qt qmake:如果存在pkg config中的标志,则使用它们,否则使用默认值,qt,qmake,pkg-config,Qt,Qmake,Pkg Config,在我的设置中,我希望同时支持系统范围的Qt安装和自定义Qt安装。我可以使用pkg config为我的系统范围安装获取正确的编译和链接标志: CONFIG += link_pkgconfig PKGCONFIG += Qt5Core 但是,如果pkg config找不到Qt5Core,构建将失败,出现项目错误:找不到Qt5Core开发包 我希望设置合理的默认值(例如/usr/local/qt5),而不是失败。它应实现以下目标: if pkg-config can find Qt5Core {

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

CONFIG += link_pkgconfig
PKGCONFIG += Qt5Core
但是,如果
pkg config
找不到
Qt5Core
,构建将失败,出现
项目错误:找不到Qt5Core开发包

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

if pkg-config can find Qt5Core {
    PKGCONFIG += Qt5Core
} else {
    INCLUDEPATH += /usr/local/qt5/
    LIBS += -lQt5Core
}
如何在项目配置中实现这一点?

您可以使用内置的测试函数,该函数在辅助shell中执行给定的命令。如果命令以零退出状态返回,则成功;否则将失败。

system(pkg-config --exists Qt5Core) {
    PKGCONFIG += Qt5Core
} else {
    INCLUDEPATH += /usr/local/qt5/
    LIBS += -lQt5Core
}

有一个qmake函数用于:

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