Поэтому я пытаюсь портировать некоторые образцы Boost.Extension для стандартных IDE - чтобы освободить их от BJAM и иметь возможность работать с ними стандартными способами на платформах .
Образец, с которым у меня сейчас есть тубулы, описан здесь .Вот мой кодовый порт ( библиотека, которую мы пытаемся загрузить в основной кодовый файл , основное приложение , общий вся идея порта описана здесь , и некоторыетекущий прогресс в Linux (большинство примеров действительно работают как нужно!) ).Когда я компилирую этот пример в linux, он компилируется, он находит библиотеку, но не работает во время выполнения с ошибка ошибки сегментации .Когда я компилирую его в Windows, происходит то же самое.
Я изо всех сил старался не изменять оригинальный учебный код , насколько это возможно.
Так что же не так с кодомпочему, если не получается, и единственное, что имеет значение - как это исправить?
Итак, как собрать этот материал с помощью premake:
- Вы получаете svn отсюда (требуется только эта папка)
- Вы получаете предварительную версию для своей платформы или собираете ее из источника и помещаете в папку, которую вы скачалиот svn
- Вы должны иметь официальный Boost, скомпилированный и установленный (пожалуйста, прочитайте файл ReadMe.txt, который мы предоставляем в каталоге), так что нужно:
- Boost C ++ библиотеки (мыпротестировано с версией 1.4.16)
- Boost-Extension (мы используем последняя версия , мы рассматриваем его как часть Boost 'Boost / Extension /
**
' Нам пришлось сделать несколько шанд (на самом деле только одну), чтобы увеличить расширение, поэтому мы предоставляем его внутри Boost.Extension.Tutorial/libs/boost/extension/
foldeТаким образом, когда вы загрузили svn, вы получили его, это только заголовок ) - Boost-Reflection (мы используем из-за этого урока , мы используем последняя редакция , мы называем это как часть Boost / Reflection /
**
'*, и для простоты мы рекомендуем просто поместить его в Boost.Extension.Tutorial/libs/boost/reflection
*)
- Теперь, когда в вашей системе установлен официальный Boost, в папке
Boost.Extension.Tutorial/libs/boost
находятся только заголовок Boost-отражение и Boost-расширение, исполняемый файл premake4 находится внутри папки Boost.Extension.Tutorial/
, мы можем просто вызвать Boost.Extension.Tutorial/ premake4-build-windows.bat
в Windows, чтобы получить sln для VisualСтудия или Boost.Extension.Tutorial/ premake-build.sh
, чтобы получить make-файлы. - Вы можете найти сгенерированные файлы решений / make-файлов в папке сгенерированных проектов.
- Удачи! =)
Обновление:
Файлы проекта для Windows и Linux теперь находятся в svn , так что вы можете создавать проекты с помощью premake - просто используйте заголовки Boost, svn и отражений только lib.
Обновление 2: Так что, как правило, мой компьютер показывает проблемы как в Windows, так и в Linux.Подробная информация о моем Linux (, который является образом openSUSE 11.3 VMWare, который включает в себя Mono 2.10.2 ) GCC (gcc -v
):
rupert@linux:~> gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/i586-suse-linux/4.5/lto-wrapper
Target: i586-suse-linux
Configured with: ../configure --prefix=/usr --infodir=/usr/share/info --mandir=/usr/share/man --libdir=/usr/lib --libexecdir=/usr/lib --enable-languages=c,c++,objc,fortran,obj-c++,java,ada --enable-checking=release --with-gxx-include-dir=/usr/include/c++/4.5 --enable-ssp --disable-libssp --disable-plugin --with-bugurl=http://bugs.opensuse.org/ --with-pkgversion='SUSE Linux' --disable-libgcj --disable-libmudflap --with-slibdir=/lib --with-system-zlib --enable-__cxa_atexit --enable-libstdcxx-allocator=new --disable-libstdcxx-pch --enable-version-specific-runtime-libs --program-suffix=-4.5 --enable-linux-futex --without-system-libunwind --enable-gold --with-plugin-ld=/usr/bin/gold --with-arch-32=i586 --with-tune=generic --build=i586-suse-linux
Thread model: posix
gcc version 4.5.0 20100604 [gcc-4_5-branch revision 160292] (SUSE Linux)
Мои окна - стандартная Windows 7 с Visual StudioTeam System 2008 Team Suite на борту.
Мой буст 1.46.1 скачать отсюда скомпилировано и установлено вручную.