Использование 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") :
- установить Brew packet manager:https://brew.sh
- установить pkg-config через brew: $ brew установить pkg-config
- установите свою библиотеку через brew: $ brew install 3rdpart
-
добавьте следующие строки в свой .про
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.