- [Требования](#req) |
- [Получение библиотек](#get) |
- [Получение библиотеки](#get) |
- [Процесс сборки](#bld) |
- [Опции сборки](#opt) |
- [Примеры](#examples) |
- [Операционные системы POSIX](#posix) |
- [Microsoft Windows](#win32) |
- [Кросс-компиляция](#cross) |
|
|
## <span id="req"></span>Требования |
|
Для сборки CppCMS Вам потребуется: |
|
_Обязательные требования_ |
|
- Современный C++ компилятор -- GCC, MSVC 9, Intel. См. [поддерживаемые компиляторы и платформы](/wikipp/en/page/cppcms_1x_platforms) |
- CMake 2.6 и выше. |
- ICU Library 3.6 и выше. |
- Python 2.4 |
- Клиент Subversion для получения исходников. |
- 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` |
|
_Рекомендуемые зависимости_ |
|
- библиотека gcrypt -- для поддержки зашифрованных cookies сессий. |
- Библиотека ICU 3.6 и выше -- поддержка |
расширенных возможностей локализации. |
- Библиотека gcrypt или OpenSSL -- поддержка |
зашифрованных cookies сессий. |
|
Если доступны обе библиотеки - будет использоваться gcrypt. |
|
_Предлагаемые_ |
|
- библиотека iconv (если libc не предусматривает интерфейс iconv) |
|
## <span id="get"></span>Получение библиотек |
## <span id="get"></span>Получение библиотеки |
|
Вам потребуется Subversion для получения исходников: |
Скачайте новейший cppcms-0.x.x.tar.bz2 из [sourceforge](https://sourceforge.net/projects/cppcms/files/) и распакуйте его: |
|
svn co http://cppcms.svn.sourceforge.net/svnroot/cppcms/framework/branches/refactoring cppcms |
tar -xjf cppcms-0.99.1.tar.bz2 |
|
И затем распакуйте cppcms_boost.tar.bz |
Если хотите получить самую свежую версию, |
вам потребуется 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. |
|
## <span id="bld"></span>Процесс сборки |
|
Перейдите в созданную директорию cppcms, создайте директорию build и перейдите в нее: |
|
mkdir build |
cd build |
|
Теперь сконфигурируйте библиотеку с CMake |
|
cmake .. |
|
или |
|
cmake various_build_options .. |
|
|
Затем выполните |
|
make |
make test |
make install |
|
|
## <span id="opt"></span>Опции сборки |
|
|
- `-DDISABLE_STATIC=ON` -- отключить сборку статической версии библиотеки cppcms |
- `-DDISABLE_SHARED=ON` -- отключить сборку совместно используемой версии библиотеки cppcms |
- `-DDISABLE_ICONV=ON` -- отключить использование iconv (вместо него будет использоваться ICU) |
- `-DDISABLE_GCRYPT=ON` -- отключить использование библиотеки gcrypt. Поддержка зашифрованных cookies для сессий перестанет быть доступна (будут использоваться только подписанные) |
- `-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 сервера. |
|
_Опции пользовательского релиза:_ Добавляют суффикс "-c" к названию библиотеки. API и ABI библиотеки потеряют совместимость со стандартными сборками и не будет поддерживаться обратная совместимость с ABI. |
|
- `-DUSE_STD_LOCALES=ON` -- использовать не ICU длялокализацию, а локализацию основанную C++ `std::locale` -- множество новшеств локализации не будут доступны, но это может оказаться полезным для встроенных сборок. |
- `-DUSE_EXTERNAL_BOOST=ON` -- компиляция и линковка с внешней библиотекой boost вместо внутренней (требуется Boost 1.36 и выше). |
- `-DBOOST_SUFFIX=suffix` -- суффикс библиотеки Boost, к которой Вы собираетесь компоноваться (при использовании внешней Boost). Отмечу, что это важно для MSVC-сборок, где debug- и release-сборки несовместимы. Например: `-DBOOST_SUFFIX=msvc9-mt-d` |
- `-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_INCLUDE_PATH=/path/to/include` -- путь к расположению заголовочных файлов библиотек, определите его для нахождения заголовочных файлов библиотек, установленных в нестандартном расположении. Вы почти всегда должны определять его под Windows. |
- `-DCMAKE_LIBRARY_PATH=/path/to/lib` -- путь к расположению библиотек, определите его для нахождения библиотек, установленных в нестандартном расположении. Вы почти всегда должны определять его под Windows. |
- `-DCMAKE_INSTALL_PREFIX=/usr/local` -- Префикс (путь) установки (аналогично autoconf --prefix). По-умолчанию - /usr/local |
|
## <span id="examples"></span>Примеры |
|
### <span id="posix"></span>Операционные системы POSIX |
|
Предполагается, что вы в терминале и директории сборки, расположенной внутри исходников CppCMS. |
|
Сборка в Linux, FreeBSD и Cygwin: |
|
cmake .. |
make |
make test |
make install |
|
Сборка в OpenSolaris с SunStudio |
|
CC=suncc CXX=sunCC cmake .. |
cmake -DCMAKE_C_COMPILER=/usr/bin/suncc -DCMAKE_CXX_COMPILER=/usr/bin/sunCC .. |
make |
make test |
make install |
|
Сборка в OpenSolaris с GCC и ICU, установленным в /opt/icu |
Сборка в OpenSolaris с GCC, где ICU установлен в /opt/icu |
|
cmake -DCMAKE_INCLUDE_PATH=/opt/icu/include -DCMAKE_LIBRARY_PATH=/opt/icu/lib .. |
make |
make test |
make install |
|
|
### <span id="win32"></span>Mircosoft Windows |
|
Предполагается, что ICU установлен в `c:\\icu` и исходники расположены в `d:\\projects\\cppcms` |
Предполагается, что сторонние библиотеки установлены в `c:\3rd_part` и исходники расположены в `d:\projects\cppcms` |
|
_Примечание:_ Требйется установка корректных значений перименной окружения PATH, чтобы система нашла все нужные ей DLL. |
_Примечание:_ Требуется установка корректных значений переменной окружения PATH, чтобы система нашла все нужные ей DLL. |
|
В cmd.exe: |
|
set PATH=c:\icu\lib;%PATH% |
set PATH=d:\projects\cppcms\build\cppcms_boost;%PATH% |
set PATH=c:\3rd_part\lib;%PATH% |
set PATH=d:\projects\cppcms\build\booster;%PATH% |
|
В bash: |
|
export PATH=/c/icu/lib:"$PATH" |
export PATH=/d/projects/cppcms/build:"$PATH" |
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:/icu/include -DCMAKE_LIBRARY_PATH=c:/icu/lib -DCMAKE_INSTALL_PREFIX=c:/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:/icu/include -DCMAKE_LIBRARY_PATH=c:/icu/lib -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=c:/cppcms .. |
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 |
|
### <span id="cross"></span>Кросс-компиляция |
|
Сборка - это обычная процедура кросс-компиляции 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 -DUSE_STD_LOCALES=ON -DCMAKE_ISTALL_PREFIX=/usr/arm-linux-eabi .. |
cmake -DCMAKE_TOOLCHAIN_FILE=ToolChain.cmake -DDISABLE_ICU_LOCALIZATION=ON -DCMAKE_ISTALL_PREFIX=/usr/arm-linux-eabi .. |
make |
make install |
|
|