Как вы добавляете библиотеки в Eclipse CDT? (Данный файл или каталог отсутствует)
У меня проблемы с добавлением библиотек заголовков.
Я щелкаю правой кнопкой мыши по своему проекту и выбираю Свойства-> C / C++ General-> Paths and Symbols.
На вкладке Включения: Языки-> GNU C++
Я нажимаю на Добавить... -> Файловая система, затем добавляю папку с именем boost_1_52_0 или любую другую папку.
Когда я использую intellisense Eclipse, он находит то, что я желаю, однако это не помогает при построении.
fatal error: boost/random/...: No such file or directory
Не уверен, почему это происходит.
Любая помощь, только оторванная от земли, будет оценена.
22:34:02 **** Incremental Build of configuration Default for project TestProj****
make all
g++ -O2 -g -Wall -fmessage-length=0 -c -o TestProj.o TestProj.cpp
TestProj.cpp:5:52: fatal error: boost/random/random_number_generator.hpp: No such file or directory
<builtin>: recipe for target `TestProj.o' failed
compilation terminated.
make: *** [TestProj.o] Error 1
Очевидно, это не так просто, как добавить папку в каталог к интерфейсам, которые предоставляет eclipse. Я в восторге.
С уважением, датчанин
5 ответов
Я щелкаю правой кнопкой мыши по своему проекту и выбираю Свойства-> C/C++ General-> Paths and Symbols.
На вкладке Включения: Языки-> GNU C++
Я нажимаю на Добавить... -> Файловая система, затем добавляю папку с именем boost_1_52_0 или любую другую папку.
Когда я использую intellisense Eclipse, он находит то, что я желаю, однако это не помогает при построении.
Да, это то, что вам может понадобиться, чтобы Eclipse CDT intellisense и индексатор были синхронизированы с вашими внешними ссылками.
fatal error: boost/random/...: No such file or directory
Не уверен, почему это происходит.
Это потому, что ваши настройки для сборки проекта могут выбрать, что вы собираетесь сами управлять процессом сборки:
Если это так, вы должны сообщить свой вручную управляемый makefile
знать о среде и настройках флагов компилятора / компоновщика.
В таких случаях для связи с управляемым вручную make-файлом со свойствами сборки Eclipse CDT можно использовать, например, настройки переменных сборки или среды из упомянутого раздела свойств проекта:
Что добавить, зависит от того, что вы пытаетесь включить. В случае Boost существует несколько библиотек только для заголовков, и есть некоторые библиотеки, которые требуют связывания в библиотеках статических / разделяемых объектов (например, сериализация).
Библиотеки только для заголовков
Для библиотек, содержащих только заголовки, вам просто нужно включить базовый каталог всех файлов заголовков. С gcc
, вы добавляете каталог, используя -I
флаг (например, -I C:/path/to/boost_52_0
). С управляемым проектом make-файла в Eclipse вы можете сделать то же самое, используя Properties > C/C++ Build > Settings > Tool Settings > GCC C++ Compiler > Directories
Библиотеки статических / общих объектов
Для статических библиотек / библиотек с общими объектами вы должны указать две опции:
-l
-> Имя библиотеки, без префикса 'lib' и суффикса файла (например,libboost_serialization.dll
->boost_serialization
-L
-> Каталог для поиска файла библиотеки. Это необходимо, только если библиотека находится по нестандартному пути.
Как отметил @Chris, для управляемого проекта makefile обе эти опции могут быть установлены через Properties > C/C++ Build > Settings > Tool Settings > GCC C++ Linker > Libraries
Является Properties > C/C++ Build > Settings > Tool settings > ... Linker > Libraries
что ты ищешь? Здесь вы добавляете опции -l при компиляции из командной строки.
Решается добавлением -I в make-файл.
BOOST = C:/Users/neo/Documents/boost_1_52
CXXFLAGS = -O2 -g -Wall -fmessage-length=0 -I$(BOOST)
OBJS = p1.o
LIBS =
TARGET = p1.exe
$(TARGET): $(OBJS)
$(CXX) -o $(TARGET) $(OBJS) $(LIBS)
all: $(TARGET)
clean:
rm -f $(OBJS) $(TARGET)