Поиск библиотек C не включен по умолчанию - PullRequest
0 голосов
/ 10 ноября 2019

Исходя из сред программирования, которые поддерживают менеджеры пакетов, я испытываю большой дискомфорт при установке и использовании библиотек, не включенных в проект по умолчанию.

Например, #include <threads.h> вызывает ошибку threads.h файл не найден,Я обнаружил, что компилятор ищет заголовочные файлы в /Library/Developer/CommandLineTools/usr/include/c++/v1, выдав gcc -print-prog-name=cpp -v. Я не уверен, что это полный список папок? Как мне найти те, которые он не находит по умолчанию? Я использую OSX, но Windows-решение тоже желательно.

1 Ответ

0 голосов
/ 12 ноября 2019

Вопрос на самом деле не говорит о том, строите ли вы свой собственный проект или проект кого-то другого, и используете ли вы IDE или какую-либо систему сборки. Я постараюсь дать общий ответ, подходящий для большинства сценариев.

Но, во-первых, это заголовочные файлы , а не библиотеки (кстати, это другой тип боли). Вам необходимо явно сделать их доступными для компилятора, если они не находятся на стандартном пути поиска. Увы, иногда много ручной работы, особенно когда вам нужно создать сторонний проект с кучей зависимостей.

Я не уверен, что это полный список папок?

Найти стандартные пути включения вашего компилятора может быть непросто. Вот один вопрос, на который есть несколько подсказок: Какие каталоги GCC по умолчанию включают в себя?

Как найти те, которые по умолчанию не найдены?

Они могут присутствовать или не присутствовать на вашем компьютере. Если они есть, вам придется выяснить, где они находятся. В противном случае вы должны выяснить, к какой библиотеке они принадлежат, затем загрузить и распаковать (и, вероятно, собрать) ее. В любом случае вам придется указать путь к заголовочным файлам этой библиотеки в вашей IDE (или Makefile, или что вы используете). О, и вам нужно убедиться, что версия библиотеки соответствует версии, требуемой проектом. Fun!

В macOS вы можете использовать сторонние менеджеры пакетов (например, brew) для управления установкой библиотеки.

pkg-config недоступна в macOS, если вы не установите ее изсторонний источник.

Если вы создаете свой собственный проект, несколько лучшим решением будет использование CMake и его find_package команда . Однако, только библиотеки, поддерживаемые CMake, могут быть обнаружены таким образом. К счастью, их коллекция поддерживаемых библиотек довольно обширна, и вы можете создавать свои собственные find_package скрипты. Более того, CMake является кроссплатформенным и может обрабатывать версии для вас.

...