Как собрать CppCMS 1.x.x
Требования
Для сборки CppCMS Вам потребуется:
Обязательные требования
- Современный C++ компилятор -- GCC, MSVC 9, Intel. См. поддерживаемые компиляторы и платформы
- CMake 2.6 и выше, рекомендуется 2.8.x.
- Библиотека Zlib.
- Библиотека PCRE.
- Python >=2.4 (но не 3)
Windows 2000 и XP: библиотека pthread-win32:
- pthreadGC2.dll для MinGW
- pthreadVC2.dll для MSVC
Windows Vista и выше не требуют библиотеку pthreads, т.к. у них лучше API, изначально отображающее в требуемые функции. Для использования Windows Vista/7 API необходимо включить опцию CMake
USE_WINDOWS6_API
Рекомендуемые зависимости
- Библиотека ICU 3.6 и выше -- поддержка расширенных возможностей локализации.
Библиотека gcrypt или OpenSSL -- поддержка зашифрованных cookies сессий.
Если доступны обе библиотеки - будет использоваться gcrypt.
Предлагаемые
- библиотека iconv (если libc не предусматривает интерфейс iconv)
Получение библиотеки
Скачайте новейший cppcms-1.x.x.tar.bz2 из sourceforge и распакуйте его:
- tar -xjf cppcms-1.0.4.tar.bz2
Если хотите получить самую свежую версию, вам потребуется Subversion для получения исходников:
- svn co https://cppcms.svn.sourceforge.net/svnroot/cppcms/framework/trunk cppcms
И затем распакуйте cppcms_boost.tar.bz (этот шаг не требуется для файлов релиза с Sourceforge)
- cd cppcms
- tar -xjf cppcms_boost.tar.bz
Примечание: Под Windows для распаковки этого файла Вы можете использовать 7zip.
Процесс сборки
Перейдите в созданную директорию cppcms, создайте директорию build и перейдите в нее:
- mkdir build
- cd build
Теперь сконфигурируйте библиотеку с CMake
- cmake ..
или
- cmake various_build_options ..
Затем выполните
- make
- make test
- make install
Опции сборки
-DDISABLE_STATIC=ON
-- отключить сборку статической версии библиотеки cppcms-DDISABLE_SHARED=ON
-- отключить сборку совместно используемой версии библиотеки cppcms-DDISABLE_ICONV=ON
-- отключить использование iconv (вместо него будет использоваться ICU)-DDISABLE_GCRYPT=ON
-- отключить использование библиотеки gcrypt (будут использоваться только подписанные cookies)-DDISABLE_OPENSSL=ON
-- отключить использование OpenSSL.-DUSE_WINDOWS6_API=ON
-- по возможности использовать API Windows Vista, Windows 7, позволяющее собрать CppCMS на Windows без библиотеки pthreads. По-умолчанию отключено.
Общие опции оптимизации размера для встраиваемых сборок:
-DDISABLE_FCGI=ON
-- сборка без FastCGI API сервера.-DDISABLE_SCGI=ON
-- сборка без SCGI API сервера.-DDISABLE_HTTP=ON
-- сборка без внутреннего HTTP сервера.-DDISABLE_ICU_LOCALE=ON
-- не использовать ICU для локализации, а базирующуюся на локализации C++std::locale
в Windows API или POSIX API -- множество возможностей локализации будут недоступны, но это может быть полезным для встраиваемых сборок.-DDISABLE_PREFORK_CACHE=ON
- отключение поддержки кеша в режимах prefork (разделяемый кеш процесса)-DDISABLE_TCPCACHE=ON
- отключение поддержки распределенного кеша (поддержка решений типа memcache)-DDISABLE_CACHE=ON
- отключение системы кеширования полностью.-DDISABLE_GZIP=ON
- отключение поддержки сжатия вывода gzip (устраняет зависимость от zlib)
Общие полезные опции CMake:
-DCMAKE_BUILD_TYPE=(Debug|Release|RelWithDebInfo|MinSizeRel)
-- тип релиза. По-умолчанию - RelWithDebInfo, в отличие от использования MSVC, где по-умолчанию - Debug.-DCMAKE_INCLUDE_PATH=/path/to/include
-- путь к расположению заголовочных файлов библиотек, определите его для нахождения заголовочных файлов библиотек, установленных в нестандартном расположении. Вы почти всегда должны определять его под Windows.-DCMAKE_LIBRARY_PATH=/path/to/lib
-- путь к расположению библиотек, определите его для нахождения библиотек, установленных в нестандартном расположении. Вы почти всегда должны определять его под Windows.-DCMAKE_INSTALL_PREFIX=/usr/local
-- Префикс (путь) установки (аналогично autoconf --prefix). По-умолчанию - /usr/local
Примеры
Операционные системы POSIX
Предполагается, что вы в терминале и директории сборки, расположенной внутри исходников CppCMS.
Сборка в Linux, FreeBSD и Cygwin:
- cmake ..
- make
- make test
- make install
Сборка в OpenSolaris с SunStudio
- cmake -DCMAKE_C_COMPILER=/usr/bin/suncc -DCMAKE_CXX_COMPILER=/usr/bin/sunCC ..
- make
- make test
- make install
Сборка в OpenSolaris с GCC, где ICU установлен в /opt/icu
- cmake -DCMAKE_INCLUDE_PATH=/opt/icu/include -DCMAKE_LIBRARY_PATH=/opt/icu/lib ..
- make
- make test
- make install
Mircosoft Windows
Предполагается, что сторонние библиотеки установлены в c:\3rd_part
и исходники расположены в d:\projects\cppcms
Примечание: Требуется установка корректных значений переменной окружения PATH, чтобы система нашла все нужные ей DLL.
В cmd.exe:
- set PATH=c:\3rd_part\lib;%PATH%
- set PATH=d:\projects\cppcms\build\booster;%PATH%
В bash:
- export PATH=/c/3rd_part/lib:"$PATH"
- export PATH=/d/projects/cppcms/build/booster:"$PATH"
Сборки MinGW:
Для сборок mingw также требуется передать путь к директории библиотек mingw, иначе может не найтись корректно библиотека winsock. Предположим, есть mingw, установленный в c:\mingw
Откройте Shell-терминал MinGW
- cmake -G "MSYS Makefiles" -DCMAKE_INCLUDE_PATH=c:/3rd_part/include -DCMAKE_LIBRARY_PATH="c:/3rd_part/lib;c:/mingw/lib" -DCMAKE_INSTALL_PREFIX=c:/mingw ..
- make
- make test
- make install
Сборки MSVC:
Откройте Shell-терминал MSVC (All Programs > Microsoft Visual Studio 2008 > Visual Studio Tools > Visual Studio 2008 Command Prompt)
- cmake -G "NMake Makefiles" -DCMAKE_INCLUDE_PATH=c:/3rd_part/include -DCMAKE_LIBRARY_PATH=c:/3rd_part/lib -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=c:/cppcms ..
- nmake
- nmake test
- nmake install
Кросс-компиляция
Сборка - это обычная процедура кросс-компиляции CMake. Для дополнительной информации прочтите http://www.cmake.org/Wiki/CMake_Cross_Compiling
Предоставим пример для ARM под Linux, без ICU.
Создайте ToolChain.cmake
- SET(CMAKE_SYSTEM_NAME Linux)
- SET(CMAKE_C_COMPILER /usr/bin/arm-linux-gnueabi-gcc)
- SET(CMAKE_CXX_COMPILER /usr/bin/arm-linux-gnueabi-g++)
- SET(CMAKE_FIND_ROOT_PATH /usr/arm-linux-gnueabi)
- SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
- SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
- SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
Сконфигурируйте
- cmake -DCMAKE_TOOLCHAIN_FILE=ToolChain.cmake -DDISABLE_ICU_LOCALIZATION=ON -DCMAKE_ISTALL_PREFIX=/usr/arm-linux-eabi ..
- make
- make install