【问题标题】:Using pkg-config with Qt Creator/qmake on Mac OSX在 Mac OSX 上使用 pkg-config 和 Qt Creator/qmake
【发布时间】:2013-06-03 01:12:24
【问题描述】:

pkg-config 不是 Mac OSX (10.8.4) 的标准配置。对于我的 Qt 项目,我想使用 pkg-config 链接协议缓冲区,以便它可以移植。选择 Qt 的初衷就是拥有一个可移植的应用程序。

但是,qmake 不允许我使用 pkg-config。 Linking libraries to a QT project using pkg-config output 提供了一个应该可以工作的简单配方。但是没有

CONFIG += link_pkgconfig PKGCONFIG += protobuf 我收到错误Project ERROR: Package protobuf not found

尽管 pkg-config 和 protobuf 是使用自制软件和路径安装的。问题在于所有 pkg​​-config 软件包。

qmaketest$which pkg-config
/usr/local/bin//pkg-config
qmaketest$pkg-config --cflags --libs libssl
-lssl -lcrypto -lz 
qmaketest$cat project.proj 
QT       += core gui

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = project
TEMPLATE = app


SOURCES += 

HEADERS  += 

FORMS    += 

OTHER_FILES += 

CONFIG += link_pkgconfig
PKGCONFIG += libssl

qmaketest$/Applications/Other/Qt5.0.2/5.0.2/clang_64/bin/qmake project.proj 
Project ERROR: Package libssl not found

当我深入挖掘时,我找到了解决方案。

【问题讨论】:

    标签: macos qt homebrew qmake


    【解决方案1】:

    解决方案

    QT_CONFIG -= no-pkg-config 行添加到项目文件中。

    说明

    在 Mac 的 Qt 包中默认禁用对 pkg-config 的支持。

    因此 qmake 被配置为假设系统上没有 pkg​​-config。

    他们通过宏变量QT_CONFIG做到这一点

    qmaketest$grep QT_CONFIG /Applications/Other/Qt5.0.2/5.0.2/clang_64/mkspecs/qconfig.pri QT_CONFIG += minimum-config small-config medium-config large-config full-config build_all debug_and_release no-pkg-config coreservices 可访问性 opengl shared qpa reduce_exports getaddrinfo ipv6ifname getifaddrs png freetype system-zlib nis cups iconv openssl rpath corewlan concurrent audio-backend v8 v8snapshot debug release qt_framework

    所以在项目文件中添加一行QT_CONFIG -= no-pkg-config 来修复它。

    对于 Qt 创建者

    还有一个问题是 Finder 启动的 Qt Creator 的路径中没有 /usr/local/bin。 如https://serverfault.com/questions/16355/how-to-set-global-path-on-os-xPATH is getting set somewhere other than launchd.conf and I don't know wherehttp://overwatering.org/blog/2012/08/setting-path-osx-mountain-lion/ 中所述,您需要将 export PATH=/usr/local/bin:$PATH 添加到 /etc/launchd.conf (如果文件不存在则创建该文件)。

    如@vmarquet 所指出的,在编辑launchd.conf 文件后也重新启动Qt Creator

    【讨论】:

    • 谢谢,我也遇到了同样的问题!
    • 很高兴它对你有所帮助 :)
    • 对于 Qt Creator,在将 PATH=/usr/local/bin:$PATH 添加到 /etc/launchd.conf 之后,您必须退出并重新启动 Qt Creator。
    【解决方案2】:

    不要创建或修改 /etc/launchd.conf:更通用的解决方案是在 /etc/paths.d 中创建一个包含要添加的路径的文件。 这可以使用这个单行命令来完成:

    sudo sh -c 'echo /usr/local/bin > /etc/paths.d/local'
    

    如果您安装了 MacPorts,您还可以执行以下操作:

    sudo sh -c 'echo /opt/local/bin > /etc/paths.d/MacPorts'
    

    然后您必须关闭/重新打开会话。

    【讨论】:

      【解决方案3】:

      一步一步地,这些对我有用(我们称之为库“3rdpart”):

      1. 安装 Brew 数据包管理器:https://brew.sh
      2. 通过 brew 安装 pkg-config:$ brew install pkg-config
      3. 通过 brew 安装您的库:$ brew install 3rdpart
      4. 在您的 .pro 中添加以下行

        unix {
         CONFIG += link_pkgconfig
         PKGCONFIG += lib3rdpart
        }
        macx {
         # Enable pkg-config (pkg-config is disabled by default in the Qt package for mac)
         QT_CONFIG -= no-pkg-config
         # pkg-config location if your brew installation is standard
         PKG_CONFIG = /usr/local/bin/pkg-config
        }
        

      通过这种方法,我设法使用 Graphviz 库编译了this Qt Project。你可以看the readme file来安装或the GraphViz.pri file有一个qmake配置的例子。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-12-11
        • 1970-01-01
        • 2017-05-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多