在Mac OSX上使用pkg-config和Qt Creator / qmake

时间:2013-06-06 20:58:21

标签: macos qt homebrew qmake

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

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

3 个答案:

答案 0 :(得分:18)

解决方案

将行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 + = minimal-config small-config medium-config large-config full-config build_all debug_and_release no-pkg-config coreservices accessibility opengl shared qpa reduce_exports getaddrinfo ipv6ifname getifaddrs png freetype system-zlib nis cups iconv openssl rpath corewlan并发audio-backend v8 v8snapshot debug release qt_framework

因此在项目文件中添加一行[{1}}修复了它。

对于Qt Creator

另一个问题是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

答案 1 :(得分: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'

然后你必须关闭/重新开启会话。

答案 2 :(得分: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库编译this Qt Project。您可以看到the readme file进行安装,或者看到the GraphViz.pri file以获得qmake配置的示例。