Добавление библиотеки Boost в проект C++ в OS X Eclipse
Я пытаюсь получить установку проекта C++ с помощью boost file system library с помощью eclipse. Я следовал этим указаниям, чтобы установить boost в моей системе. Направления, где в значительной степени
- Скачать
- извлечение
- беги bootstrap.sh
- беги ./ архитектура 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
Есть идеи?
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-битной версии и еще не имел много времени, чтобы попробовать его....
Просто хотел прояснить, что на самом деле работает, так как это было как бы собрано вместе из нескольких ответов.
- загрузите файлы boost и распакуйте их в нужное место.
- в вашем терминале перейдите в каталог и выполните команду
./bootstrap.sh- когда это будет сделано, бегите
./bjam(это займет некоторое время, поэтому идите курить и возьмите чашку кофе)- Откройте проект eclipse и перейдите в раздел проект > свойства > сборка C / C++ > настройки
- Нажмите на Компоновщик MacOS X C++ > Библиотеки. Вы должны увидеть разделенное окно с верхней частью для " библиотеки (- l)". В этом разделе добавьте и
boost_system, иboost_filesystem. В нижнем разделе он должен быть для " путь поиска библиотеки (- L)". Здесь вы хотите поместить путь к каталогу stage / lib, в котором вы извлекли загрузку boost. Он должен выглядеть следующим образом:![]()
- щелкните компилятор GCC C++ > включает. Это будет одна панель, где написано " Include Paths (- I)", ну я думаю, что это I, так как он шрифт странный и может быть, и в нижнем регистре l тоже. Во всяком случае, в этом разделе добавьте путь туда, где вы ставите boost без части stage/lib. Это должно выглядеть следующим образом:
![]()
Теперь все должно компилироваться без проблем, и если вам нужно использовать какие-либо другие библиотеки boost, нужно просто добавить их в раздел компоновщика, где находятся boost_filesystem и boost_system. Наслаждаться.
Я недавно удалил 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