Добавление библиотеки Boost в проект C++ в OS X Eclipse



Я пытаюсь получить установку проекта C++ с помощью boost file system library с помощью eclipse. Я следовал этим указаниям, чтобы установить boost в моей системе. Направления, где в значительной степени




  1. Скачать

  2. извлечение

  3. беги bootstrap.sh

  4. беги ./ архитектура bjam=комбинированная


Похоже, все прошло нормально, никаких ошибок. Затем я запустил eclipse и создал новый тестовый проект под названием test с одним файлом под названием test.СРР. Код в нем есть это:



#include <stdio.h>
#include <boost/filesystem.hpp>

int main() {
boost::filesystem::path path("/Users/schoen"); // random pathname
bool result = boost::filesystem::is_directory(path);
printf("Path is a directory : %dn", result);
return 0;
}


Это просто что-то простое, чтобы убедиться, что все настроено правильно. Конечно, я попытался скомпилировать в этот момент, и это не удалось. Погуглил немного и нашел Этот сайт. Он сказал, чтобы добавить библиотеку boost в компоновщик, перейдя в свойства проекта и добавив "boost_filesystem". Я попробовал это сделать, но ничего не вышло.



Может ли кто-нибудь указать мне правильное направление или подсказать, как настроить Boost в проекте Eclipse?



Я есть новичок в C++ и Eclipse, и большая часть моего опыта-в Java с Netbeans. Так что в данный момент я совершенно растерян.



Обновить



Я просто хотел обновить то, что я пытался сделать, основываясь на полученных ответах.



По предложению Алекса я добавил boost_system и boost_filesystem в список компоновщиков. Я все еще получал те же ошибки компилятора.



Следуя предложению rve, я добавил путь к библиотекам boost в путь поиска библиотеки. Когда это произошло не работать. Я очистил список компоновщиков и попробовал его только с помощью пути поиска библиотеки. Это тоже не сработало.



Затем я очистил путь поиска библиотеки. Затем я вручную отредактировал команду в окне компоновщика, чтобы она была "g++ - L / Users/jacobschoen / Library/boost_1_45_0 / stage/lib-lboost-lboost_filesystem". Это тоже не сработало.



Во всех этих случаях я пытался установить путь к boost, чтобы быть "/ Users/jacobschoen / Library/boost_1_45_0 " и '/Пользователи/jacobschoen/библиотека/boost_1_45_0/этапа/Либ'. Ни то, ни другое не сработало.



В соответствии с запросом ошибка comiler для приведенного выше кода:



**** Build of configuration Debug for project test ****

make all
Building file: ../src/test.cpp
Invoking: GCC C++ Compiler
g++ -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"src/test.d" -MT"src/test.d" -o"src/test.o" "../src/test.cpp"
../src/test.cpp:10:32: warning: boost/filesystem.hpp: No such file or directory
../src/test.cpp: In function 'int main()':
../src/test.cpp:13: error: 'boost' has not been declared
../src/test.cpp:13: error: expected `;' before 'path'
../src/test.cpp:14: error: 'boost' has not been declared
../src/test.cpp:14: error: 'path' was not declared in this scope
make: *** [src/test.o] Error 1


Если у кого-то есть еще какие-то предложения, я все еще пытаюсь.

Второе Обновление
По предложению rholmes я добавил библиотеку include вместе со списком компоновщиков и путем поиска библиотеки. Итак, теперь ошибка компиляции:



**** Build of configuration Debug for project test ****

make all
Building target: test
Invoking: MacOS X C++ Linker
g++ -L/Users/jacobschoen/Library/boost_1_45_0 -o "test" ./src/test.o -lboost_system -lboost_filesystem
ld: library not found for -lboost_system
collect2: ld returned 1 exit status
make: *** [test] Error 1


Есть идеи?

708   5  

5 ответов:

Не уверен, где вы делаете это в Eclipse в эти дни, но под включенными путями для Eclipse должен быть путь к главному каталогу boost (/Users/jacobschoen / Library/boost_1_45_0?). В строке компилятора должно быть что-то вроде следующего, я бы сказал:

Вызов: компилятор GCC C++

Г++ -я/пользователи/jacobschoen/библиотека/boost_1_45_0 -О0 -Г3-стены -с-fmessage-длина=0 -ММД (и т. д..)

Update: глядя на мою систему, путь компоновщика в вашей может быть больше соответственно:

-я/пользователи/jacobschoen/библиотека/boost_1_45_0/этапа/Либ

В зависимости, конечно, от того, как вы установили и построили boost-это с моей последней попыткой с полным исходным кодом сборки. В зависимости от того, как вы получили импульс, это может быть или не может отличаться. Я недавно переделал boost на моем Mac для 64-битной версии и еще не имел много времени, чтобы попробовать его....

Просто хотел прояснить, что на самом деле работает, так как это было как бы собрано вместе из нескольких ответов.

  1. загрузите файлы boost и распакуйте их в нужное место.
  2. в вашем терминале перейдите в каталог и выполните команду ./bootstrap.sh
  3. когда это будет сделано, бегите ./bjam (это займет некоторое время, поэтому идите курить и возьмите чашку кофе)
  4. Откройте проект eclipse и перейдите в раздел проект > свойства > сборка C / C++ > настройки
  5. Нажмите на Компоновщик MacOS X C++ > Библиотеки. Вы должны увидеть разделенное окно с верхней частью для " библиотеки (- l)". В этом разделе добавьте и boost_system, и boost_filesystem. В нижнем разделе он должен быть для " путь поиска библиотеки (- L)". Здесь вы хотите поместить путь к каталогу stage / lib, в котором вы извлекли загрузку boost. Он должен выглядеть следующим образом: текст Alt
  6. щелкните компилятор GCC C++ > включает. Это будет одна панель, где написано " Include Paths (- I)", ну я думаю, что это I, так как он шрифт странный и может быть, и в нижнем регистре l тоже. Во всяком случае, в этом разделе добавьте путь туда, где вы ставите boost без части stage/lib. Это должно выглядеть следующим образом: текст Alt

Теперь все должно компилироваться без проблем, и если вам нужно использовать какие-либо другие библиотеки boost, нужно просто добавить их в раздел компоновщика, где находятся boost_filesystem и boost_system. Наслаждаться.

Добавьте boost_system в список компоновщиков вместе с boost_filesystem.

Я недавно удалил boost rpm и установил Boost, как вы это сделали. У меня не было проблем с запуском программ Boost в Eclipse. Я не добавлял никаких дополнительных параметров. Просто установил boost и запустил Boost-программы. Это прекрасно работает.

Попробовал вашу программу в Редакторе vi. Прокомментировал все в main

#include <cstdio>
#include <boost/filesystem.hpp>

int main() {
    /*boost::filesystem::path path("/Users/schoen"); // random pathname
    bool result = boost::filesystem::is_directory(path);
    printf("Path is a directory : %d\n", result);*/
    return 0;
}

И он все еще давал эту ошибку:

/tmp/cc7TAIYS.o: In function `__static_initialization_and_destruction_0(int, int)':
test.cpp:(.text+0x29): undefined reference to `boost::system::get_system_category()'
test.cpp:(.text+0x35): undefined reference to `boost::system::get_generic_category()'
test.cpp:(.text+0x41): undefined reference to `boost::system::get_generic_category()'
test.cpp:(.text+0x4d): undefined reference to `boost::system::get_generic_category()'
test.cpp:(.text+0x59): undefined reference to `boost::system::get_system_category()'
collect2: ld returned 1 exit status

Я озадачен. Программы Boost работают в моей системе, но заголовочные файлы вашей программы сами по себе создают проблемы. Я сомневаюсь,что это проблема с затмением. Это должно быть что-то другое.

Я только что столкнулся с чем-то очень похожим на это, используя eclipse и CDT... Оказывается, используя ubuntu и apt-get, libboost_system устанавливается как libboost_system.1.40.0 in / usr / lib

Если вы попытаетесь добавить его через вкладку Библиотека в Helios, он будет жаловаться, потому что ищет*. so и *.s0. 1. 40. 0 явно не соответствует этому. Однако, внимательно посмотрев на то, что компоновщик пытался сделать, я просто ввел сырую строку "boost_system"в сумматор пути включения. Это привело к тому, что компоновщик делает" - lboost_system", который является форматом, с которым компоновщик знает, как иметь дело при разрешении зависимости версии... Если вы вместо этого введете полный путь к файлу. so, компоновщик просто пожалуется, потому что он пытается сделать "-l/usr/lib/libboost_system.so.1.40.0" .

Так что примите мой совет и просто введите простой "boost_system" после выполнения установки apt-get.. Это сделает все очень легким.

Comments

    Ничего не найдено.