Main  /  Edit version 5  /  Edit version 6  /   /  Users Area

Difference "How Build CppCMS 1.x.x" ver. 5 versus ver. 6

Content:

- [Requirements](#req)
- [Getting library](#get)
- [Build Process](#bld)
- [Build Options](#opt)
- [Examples](#examples)
- [POSIX Operating Systems](#posix)
- [Microsoft Windows](#win32)
- [Cross Compilation](#cross)
## <class id="req"></class>Requirements
In order to build CppCMS you need:
_Mandatory Requirements_
- Modern C++ Compiler -- GCC, MSVC 9, Intel. See [supported compilers and platforms](/wikipp/en/page/cppcms_1x_platforms)
- CMake 2.6 and above.
- ICU Library 3.6 and above.
- PCRE library.
- Python 2.4
- Subversion client in order to get source code.
- _MSVC/Mingw only_: pthread-win32 library:
- pthreadGC2.dll for MinGW
- pthreadVC2.dll for MSVC
_Recommended Dependencies_
- gcrypt library -- for support of encrypted session cookies.
_Suggested_
- iconv library (if libc does not provide iconv interface)
## <class id="get"></class>Getting library
You need Subversion to get the sources:
svn co http://cppcms.svn.sourceforge.net/svnroot/cppcms/framework/branches/refactoring cppcms
And then extract the cppcms_boost.tar.bz2
cd cppcms
tar -xjf cppcms_boost.tar.bz2
_Note:_ Under windows you may use 7zip in order to extract the file.
## <class id="bld"></class>Build Process
Go to the cppcms directory you created and create build directory and go to it:
mkdir build
cd build
Now configure the library with CMake
cmake ..
Or
cmake various_build_options ..
Then run
make
make test
make install
## <class id="opt"></class>Build Options
- `-DDISABLE_STATIC=ON` -- disable building of static version of cppcms library
- `-DDISABLE_SHARED=ON` -- disable building of shared version of cppcms library
- `-DDISABLE_ICONV=ON` -- disable usage of iconv (ICU would be used instead)
- `-DDISABLE_GCRYPT=ON` -- disable usage of gcrypt library. No support of encrypted session cookies would be available (only signed one)
- `-DDISABLE_FCGI=ON` -- build without FastCGI Server API.
- `-DDISABLE_SCGI=ON` -- build without SCGI Server API.
- `-DDISABLE_HTTP=ON` -- build without internal HTTP server.
_Options for custom release:_ They would add "-c" suffix to the library name. The API and ABI of the library would not be compatible with standard builds and no ABI backward compatibility is provided.
- `-DUSE_STD_LOCALES=ON` -- do not use ICU for localization but rather C++ `std::locale` based localization -- many localization features would not be available, but it may be useful for embedded builds.
- `-DUSE_EXTERNAL_BOOST=ON` -- compile and link with external boost library instead of internal one (Boost 1.36 and above required).
- `-DBOOST_SUFFIX=suffix` -- the suffix of Boost library you need to link to (when using external Boost). Note it is important for MSVC build where debug and release builds are not compatible. For example: `-DBOOST_SUFFIX=msvc9-mt-d`
- `-DDISABLE_ICU_LOCALIZATION=ON` -- do not use ICU for localization but rather C++ `std::locale` based localization -- many localization features would not be available, but it may be useful for embedded builds.
_Generic useful CMake options:_
- `-DCMAKE_BUILD_TYPE=(Debug|Release|RelWithDebInfo|MinSizeRel)` -- release type. RelWithDebInfo is default, unless using MSVC where Debug is default.
- `-DCMAKE_INCLUDE_PATH=/path/to/include` -- path to location of libraries headers, provide it in order to find libraries headers installed in non-standard locations. You almost always need to provide it under Windows.
- `-DCMAKE_LIBRARY_PATH=/path/to/lib` -- path to location of libraries, provide it in order to find libraries installed in non-standard locations. You almost always need to provide it under Windows.
- `-DCMAKE_INSTALL_PREFIX=/usr/local` -- Installation prefix (similar to autoconf --prefix). Defaults to /usr/local
## <class id="examples"></class>Examples
### <class id="posix"></class>POSIX Operating Systems
I assume that you are in terminal in build directory that is places inside CppCMS sources.
Build under Linux, FreeBSD and Cygwin:
cmake ..
make
make test
make install
Build under OpenSolaris with SunStudio
CC=suncc CXX=sunCC cmake ..
make
make test
make install
Build under OpenSolaris with GCC, where ICU installed in /opt/icu
cmake -DCMAKE_INCLUDE_PATH=/opt/icu/include -DCMAKE_LIBRARY_PATH=/opt/icu/lib ..
make
make test
make install
### <class id="win32"></class>Mircosoft Windows
We assume that ICU installed in `c:\\icu` and
sources are placed in `d:\\projects\\cppcms`
We assume that 3rd part libraries installed in `c:\3rd_part` and
sources are placed in `d:\projects\cppcms`
_Note:_ You need to setup correct PATH variables in order
to let system find all DLLs it needs.
Under 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%
Under 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 Builds:_
Open MinGW Shell terminal
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 -DCMAKE_INSTALL_PREFIX=c:/mingw ..
make
make test
make install
_MSVC Builds:_
Open MSVC Shell terminal (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
### <class id="cross"></class>Cross Compiling
The build is just ordinary CMake cross-compilation procedure. For more information read <http://www.cmake.org/Wiki/CMake_Cross_Compiling>
We would provide an example for ARM under Linux, without ICU.
Create 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)
Configure
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

About

CppCMS is a web development framework for performance demanding applications.

Support This Project

SourceForge.net Logo

Поддержать проект

CppCMS needs You


Navigation

Main Page


Valid CSS | Valid XHTML 1.0