10

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

但是,qmake 不允许我使用 pkg-config。使用 pkg-config 输出将库链接到 QT 项目提供了一个应该有效的简单方法。但它没有

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

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

4

3 回答 3

17

解决方案

将该行添加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-x中所述,PATH 设置在 launchd.conf 以外的其他位置,我不知道在哪里http ://overwatering.org/blog/2012/08/setting-path-osx-mountain-lion/你需要添加 export PATH=/usr/local/bin:$PATH 到 /etc/launchd.conf (创建文件如果它不存在)。

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

于 2013-06-06T20:58:20.717 回答
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'

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

于 2013-07-22T16:04:30.090 回答
2

一步一步,这些对我有用(让我们称之为库“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 库编译了这个 Qt 项目。您可以查看要安装的自述文件或GraphViz.pri 文件以获取 qmake 配置示例。

于 2018-07-30T21:33:17.853 回答