Добавление Boost Library в проект C ++ в OS X Eclipse - PullRequest
9 голосов
/ 14 декабря 2010

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

  1. скачать
  2. извлечь
  3. запустить bootstrap.sh
  4. запустить ./bjam архитектура = в сочетании

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

#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 : %d\n", result);
    return 0;
}

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

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

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

ОБНОВЛЕНИЕ

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

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

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

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

Во всех этих случаях я пытался установить путь для повышения: '/ Users / jacobschoen / Library / boost_1_45_0' и '/ Users / jacobschoen / Library / boost_1_45_0 / stage / lib'.Ни один из них не работал.

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

**** 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 ]

15 голосов
/ 16 декабря 2010

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

  1. Загрузите файлы поддержки и распакуйте их туда, куда вы хотите их поместить.
  2. В вашем терминале перейдите в каталог и запустите ./bootstrap.sh
  3. Когда это будет сделано, запустите ./bjam (это займет некоторое время, так что покурите и возьмите чашку кофе)
  4. Откройте ваш проект Eclipse и перейдите в Project> Properties> C / C ++ Build> Settings
  5. Нажмите MacOS X C ++ Linker> Библиотеки. Вы должны увидеть разделенное окно с верхней частью для «Библиотеки (-l)». В этом разделе добавьте boost_system и boost_filesystem. В нижнем разделе это должно быть «Путь поиска библиотеки (-L)». Здесь вы хотите указать путь к каталогу stage / lib, внутри которого вы извлекли ускоренную загрузку. Это должно выглядеть примерно так: alt text
  6. Нажмите Компилятор GCC C ++> Включает. Это будет единственная панель с надписью «Включить пути (-I)», ну, я думаю, что это шрифт I, поскольку он странный и может быть также строчным l. В любом случае, в этом разделе добавьте путь туда, куда вы положили boost без части stage / lib Это должно выглядеть так: alt text

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

4 голосов
/ 16 декабря 2010

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

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

g ++ -I / Users / jacobschoen / Library / boost_1_45_0 -O0 -g3 -Wall-c -fmessage-length = 0 -MMD (и т. д.)

Обновление: Глядя на мою систему, путь компоновщика на вашем компьютере может быть более подходящим:

-I / Users / jacobschoen/ Library / boost_1_45_0 / stage / lib

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

2 голосов
/ 14 декабря 2010

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

0 голосов
/ 07 мая 2011

Я только что столкнулся с чем-то очень похожим, используя eclipse и CDT ... Оказывается, используя ubuntu и apt-get, libboost_system устанавливается как libboost_system.1.40.0 в / 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 .. Это сделает все очень просто.

0 голосов
/ 14 декабря 2010

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

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

#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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...