Форум программистов, компьютерный форум, киберфорум
Croessmah
Войти
Регистрация
Восстановить пароль

Использование pkg-config в IDE Eclipse-CDT

Запись от Croessmah размещена 30.12.2015 в 13:13
Показов 5906 Комментарии 0
Метки c++, eclipse, gtkmm, pkg-config

Для Eclipse-cdt (далее просто Ecllipse) существует плагин, который упрощает использование pkg-config в этой IDE (Pkg-config support for Eclipse CDT) .
Но данный плагин имеет один, как мне кажется, существенный недостаток. Он изменяет настройки проекта, добавляя вывод pkg-config в соответствующие настройки (пути, библиотекии т.д.), при этом в Makefile получаются жестко забитые параметры, вместо "вызова" pkg-config. Пример:
LIBS := -lgtkmm-3.0 -latkmm-1.6 -lgdkmm-3.0 -lgiomm-2.4 ...

В этом блоге я опишу как подцепить pkg-config без данного плагина.
Для того, чтобы сам "вызов" pkg-config попал в Makefile, можно в настройки компилятора добавить
Linux: $(shell pkg-config some_lib --cflags)
Нажмите на изображение для увеличения
Название: Снимок.png
Просмотров: 1514
Размер:	43.0 Кб
ID:	3490
в параметры линкера
Linux: $(shell pkg-config some_lib --libs)
Нажмите на изображение для увеличения
Название: Снимок-1.png
Просмотров: 1487
Размер:	65.9 Кб
ID:	3491
теперь Eclipse будет добавлять в Makefile необходимые "команды"
Code
1
2
g++ ... $(shell pkg-config some_lib --cflags) ...
g++ ... $(shell pkg-config some_lib --libs) ...
Также для нормальной линковки необходимо немного изменить "command line pattern" для линкера, переместив ${FLAGS} в конец строки.
Нажмите на изображение для увеличения
Название: Снимок-2.png
Просмотров: 1275
Размер:	64.0 Кб
ID:	3492

На данном этапе данные параметры будут подхватываться компилятором во время построения и сборка пройдет без проблем.
Но Eclipse ничего не знает о параметрах, которые добавляет pkg-config и будет выделять "ошибки", упорно говорить нам "unresolved inclusion" на заголовках, пути к которым выдает pkg-config, выделять их, ни Indexer, ни Content Assist ничего не будут знать о наших новых параметрах компилятора, поэтому работать будет невозможно.
Нам необходимо немного настроить парсер.
Для этого идем в настройки:
Code
1
project -> properties -> general c/c++ -> preprocessor include paths, macros etc. -> providers
активируем (отмечаем галкой)
"CDT GCC Build Output Parser"
также в настройках этого пункта (появятся внизу при клике) отмечаем галочкой пункт
"Use global provider shared between projects"
Нажмите на изображение для увеличения
Название: Снимок-3.png
Просмотров: 1507
Размер:	133.8 Кб
ID:	3493
Подтверждаем все изменения. Теперь в редакторе кода исчезли ошибки "unresolved inclusion".
Теперь можно запустить в работу Indexer, чтобы он обновил свои данные.
Для этого идем в
projects -> c/c++ index
и выбираем "Rebuild". При этом внизу окна будет отображен текущий прогресс обновления данных Indexer'а.
Нажмите на изображение для увеличения
Название: Снимок-4.png
Просмотров: 1395
Размер:	30.0 Кб
ID:	3494
По завершении этой операции ошибки исчезнут.
Context Assist также теперь сможет помогать в наборе кода.

Также записал видео со всеми вышеперечисленными действиями и несколькими попытками сборки, для показа изменений.
Помимо этого было создано две "глобальные переменные" для Eclipse, чтобы можно было их использовать в последующих проектах. И вместо "команд" $(shell pkg-config gtkmm-3.0 --cflags) и $(shell pkg-config gtkmm-3.0 --libs) используются соответствующие переменные ${PC-GTKMM-3.0-CFLAGS} и ${PC-GTKMM-3.0-LIBS}.
Кликните здесь для просмотра всего текста
Метки c++, eclipse, gtkmm, pkg-config
Размещено в Eclipse CDT
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Всего комментариев 0
Комментарии
 
Новые блоги и статьи
Java Micronaut в Docker: контейнеризация с Maven и Jib
Javaican 16.03.2025
Когда речь заходит о микросервисной архитектуре на Java, фреймворк Micronaut выделяется среди конкурентов. Он создан с учётом особенностей облачных сред и контейнеров, что делает его идеальным. . .
Управление зависимостями в Java: Сравнение Spring, Guice и Dagger 2
Javaican 16.03.2025
Инъекция зависимостей (Dependency Injection, DI) — один из фундаментальных паттернов проектирования, который радикально меняет подход к созданию гибких и тестируемых Java-приложений. Суть этого. . .
Apache Airflow для оркестрации и автоматизации рабочих процессов
Mr. Docker 16.03.2025
Управление сложными рабочими процессами — одна из главных головных болей инженеров данных и DevOps-специалистов. Представьте себе: каждый день нужно запускать десятки скриптов в определенной. . .
Оптимизация приложений Java для ARM
Javaican 16.03.2025
ARM-архитектура переживает настоящий бум популярности в технологическом мире. Когда-то воспринимаемая исключительно как решение для мобильных устройств и встраиваемых систем, сегодня она штурмует. . .
Управление состоянием в Vue 3 с Pinia и Composition API
Reangularity 16.03.2025
Когда я начал работать с Vue несколько лет назад, мне казалось достаточным использовать простую передачу данных через props и события между компонентами. Однако уже на среднем по сложности проекте. . .
Введение в DevSecOps: основные принципы и инструменты
Mr. Docker 16.03.2025
DevSecOps - это подход к разработке программного обеспечения, который объединяет в себе принципы разработки (Dev), безопасности (Sec) и эксплуатации (Ops). Суть подхода заключается в том, чтобы. . .
GitHub Actions vs Jenkins: Сравнение инструментов CI/CD
Mr. Docker 16.03.2025
В этой битве за эффективность и скорость выпуска программных продуктов ключевую роль играют специализированные инструменты. Два гиганта в этой области — GitHub Actions и Jenkins — предлагают разные. . .
Реактивное программировани­е с Kafka Stream и Spring WebFlux
Javaican 16.03.2025
Реактивное программирование – это программная парадигма, ориентированная на потоки данных и распространение изменений. Она позволяет выражать статические или динамические потоки данных и. . .
Простая нейросеть на КуМир: Учебное пособие по созданию и обучению нейронных сетей
EggHead 16.03.2025
Искусственные нейронные сети — удивительная технология, позволяющая компьютерам имитировать работу человеческого мозга. Если вы хотя бы немного интересуетесь современными технологиями, то наверняка. . .
Исполнитель Кузнечик в КуМир: Решение задач
EggHead 16.03.2025
Среди множества исполнителей в системе КуМир особое место занимает Кузнечик — простой, но невероятно полезный виртуальный персонаж, который перемещается по числовой прямой, выполняя ваши команды. На. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru