Eclipse: добавить внешнюю библиотеку для проекта c Не работает
Я сделал следующее:
- Создать новый проект c (Makefile Project с существующим кодом)
- Добавлена переменная сборки, на которую жаловался мой Makefile
- Теперь мой исходный файл.c жалуется на файлы #include, потому что он не знает, где находится папка lib, я попытался добавить папку lib в путь к библиотеке (НЕ РАБОТАЕТ).
Как я могу связать свой проект с внешней папкой lib, чтобы мой исходный файл.c мог читать файлы.h, необходимые для #include?
Я добавил путь к библиотеке в Paths and Symbols->Includes, НО, когда я возвращаюсь к проекту, он показывает только корневую папку и ничего внутри нее. Должен ли я также добавить каждый отдельный файл.so lib?
2 ответа
Хорошо, так что я понял это:
(1) В начале у меня были source.c и MAKEFILE (2) Создать новый проект c (проект Makefile с существующим кодом) (3) MAKEFILE пожаловался на переменную, поэтому я добавил ее в переменную окружения (4) #include files жаловался, поэтому я добавил внешнюю библиотеку следующим образом: (а) я нашел путь к своей библиотеке и обнаружил, что до /lib есть папка include (b) папка include содержит список заголовочных файлов (c), поэтому я добавил путь к папка include НЕ папка lib под путями и символами include
РАБОТАЕТ, КАК ОЧАРОВАТЬСЯ!
Ответ здесь: Как вы добавляете библиотеки в Eclipse CDT? (Данный файл или каталог отсутствует)
@ cyfur01 имеет лучший ответ:
Что добавить, зависит от того, что вы пытаетесь включить. В случае Boost существует несколько библиотек только для заголовков, и есть некоторые библиотеки, которые требуют связывания в библиотеках статических / разделяемых объектов (например, сериализация). Библиотеки только для заголовков
Для библиотек, содержащих только заголовки, вам просто нужно включить базовый каталог всех файлов заголовков. С помощью gcc вы добавляете каталог, используя флаг -I (например, -I C:/path/to/boost_52_0). С помощью управляемого проекта make-файла в Eclipse вы можете сделать то же самое, используя Properties > C/C++ Build
Настройки> Настройки инструмента> Компилятор GCC C++> Каталоги Статические библиотеки / Библиотеки общих объектов
Для статических библиотек / библиотек с общими объектами вы должны указать две опции:
-l --> The name of the library, less the 'lib' prefix and the file suffix (e.g., libboost_serialization.dll -> boost_serialization -L --> The directory to look for the library file in. This is only needed if the library is on a non-standard path.
Как отметил @Chris, для проекта управляемого make-файла обе эти опции могут быть установлены через Свойства> Сборка C / C++> Настройки> Настройки инструмента> GCC C++ Linker > Библиотеки