Использование pkg-config с Qt Creator / qmake на Mac OSX

pkg-config не поставляется stantdard с Mac OSX (10.8.4). Для моего проекта Qt я хотел использовать pkg-config для связи в protocol-buffer, чтобы он был переносимым. Самый смысл выбора Qt состоял в том, чтобы иметь портативное приложение в первую очередь.

однако qmake не позволил бы мне использовать pkg-config. связывание библиотек с проектом QT с помощью вывода pkg-config дает простой рецепт, который должен работать. Но это не так!--4-->

С CONFIG += link_pkgconfig PKGCONFIG += protobuf Я получаю ошибку Project ERROR: Package protobuf not found

Eventhough pkg-config и protobuf устанавливаются с помощью homebrew и в path. И проблема со всеми пакетами 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 ответов


решение

добавить строку QT_CONFIG -= no-pkg-config в файле проекта.

объяснение

поддержка pkg-config отключена по умолчанию в пакете Qt для mac.

таким образом, qmake настроен на предположение, что в системе нет pkg-config.

они делают это через переменную макрос QT_CONFIG

qmaketest$grep QT_CONFIG / приложения / другое/Qt5.0.2/5.0.2 / clang_64/mkspecs / qconfig.ПОИ QT_CONFIG += минимальный-конфиг малые конфигурации средней конфигурации большого конфиг полный конфиг build_all debug_and_releaseв нет-pkg-config coreservices доступность для OpenGL общая qpa по reduce_exports getaddrinfo ipv6ifname getifaddrs ПНГ система программа FreeType-библиотека zlib НИС чашки с iconv в OpenSSL путь rpath corewlan одновременных аудио-серверной V8 с v8snapshot отладки qt_framework выпуска

Итак, добавление строки QT_CONFIG -= no-pkg-config в файле проекта починил.

Для Qt Creator

еще одна проблема заключается в том, что Qt Creator запущенный Finder не будет иметь /usr/local / bin в пути. Как описано в https://serverfault.com/questions/16355/how-to-set-global-path-on-os-x , путь устанавливается где-то, кроме launchd.conf и я не знаю, где и http://overwatering.org/blog/2012/08/setting-path-osx-mountain-lion/ вам нужно добавить путь экспорта= / usr / local /bin:$PATH в/etc / launchd.conf (создайте файл, если он не существует).

также перезапустите Qt Создатель после редактирования launchd.conf файл, как указано @vmarquet


Не создавайте и не изменяйте /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'

затем вам нужно закрыть/снова открыть сеанс.


шаг за шагом, они работали для меня (давайте называть библиотеку "3rdpart") :

  1. установить Brew packet manager:https://brew.sh
  2. установить pkg-config через brew: $ brew установить pkg-config
  3. установите свою библиотеку через brew: $ brew install 3rdpart
  4. добавьте следующие строки в свой .про

    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
    }
    

С помощью этого метода, мне удалось скомпилировать этот Qt Проект использование библиотек Graphviz. Вы можете видеть файл readme установить или программе Graphviz.pri файл чтобы иметь пример конфигурации qmake.