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

10

在Mac OSX(10.8.4)中,pkg-config不是标准配置项。我的Qt项目中我想使用pkg-config来链接protocol-buffer,以使其具有可移植性。选择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

尽管已经使用homebrew安装了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个回答

18

解决方法

在项目文件中添加一行QT_CONFIG -= no-pkg-config

解释

Mac版Qt软件包默认禁用了对pkg-config的支持。

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

他们通过宏变量QT_CONFIG实现了这一点。

所以将一行QT_CONFIG -= no-pkg-config添加到项目文件中即可解决问题。

适用于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。


谢谢,我遇到了完全相同的问题! - Kuba hasn't forgotten Monica
对于Qt Creator,当您将PATH=/usr/local/bin:$PATH添加到/etc/launchd.conf后,您必须退出并重新启动Qt Creator。 - vmarquet

2
逐步来说,这些对我很有用(我们称之为“第三方”库):

  1. Install Brew packet manager : https://brew.sh
  2. Install pkg-config via brew : $ brew install pkg-config
  3. Install your library via brew : $ brew install 3rdpart
  4. Add the following lines in your .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项目此Qt项目。您可以查看自述文件以进行安装或GraphViz.pri文件以获得qmake配置示例。请注意保留html标签。

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'

您需要关闭/重新打开会话。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接