Main  /  Edit version 50  /  Edit version 51  /   /  Users Area

Difference "How to build CppCMS 1.x.x" ver. 50 versus ver. 51

Content:

<!--toc-->
## 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, 2.8.x is recommended.
- Zlib library
- PCRE library.
- Python >=2.4 (but not 3)
- Python >=2.7 or >= 3.6
### Recommended Dependencies
- ICU Library 3.6 and above -- support
of advanced localization features.
- gcrypt or OpenSSL library -- for support
of encrypted session cookies.
If both available gcrypt would be used.
### Suggested
- iconv library (if libc does not provide iconv interface)
### Dependencies for Common Linux Distributions
Debian Based (Debian, Ubuntu):
Packages: cmake libpcre3-dev zlib1g-dev libgcrypt11-dev libicu-dev python
Getting:
aptitude install cmake libpcre3-dev zlib1g-dev libgcrypt11-dev libicu-dev python
RPM Based (RadHat, CentOS, Fedora, Suse):
Packages: cmake gcc-c++ gcc make zlib-devel pcre-devel libicu-devel libgcrypt-devel
Getting:
yum install cmake gcc-c++ gcc make zlib-devel pcre-devel libicu-devel libgcrypt-devel
### Notes for Microsoft Visual C++ users
Building cppcms with Visual Studio projects is not supported due to complexity of debug and release mode.
You should use nmake as shown in the example.
## Getting The Sources
Download the latest cppcms-1.x.x.tar.bz2 from [sourceforge](https://sourceforge.net/projects/cppcms/files/) and extract it:
tar -xjf cppcms-1.0.4.tar.bz2
If you want to get latest version
You need git to get the sources:
git clone https://github.com/artyom-beilis/cppcms.git cppcms
## 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
sudo make install
## 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.
- `-DDISABLE_OPENSSL=ON` -- disable usage of OpenSSL.
- `-DUSE_WINDOWS6_API=ON` -- use Windows Vista, Windows 7 API if possible, allows CppCMS using native Windows Vista/7 conditional variables and other advanced API. By default disabled.
- `-DLIBDIR=lib64` - use alternative name for library directory, for example use lib64 on Red Hat based distributions.
_Generic Size Optimization Options for Embedded Builds:_
- `-DDISABLE_FCGI=ON` -- build without FastCGI Server API.
- `-DDISABLE_SCGI=ON` -- build without SCGI Server API.
- `-DDISABLE_HTTP=ON` -- build without internal HTTP server.
- `-DDISABLE_ICU_LOCALE=ON` -- do not use ICU for localization but rather C++ `std::locale`, Windows API or POSIX API based localization -- many localization features would not be available, but it may be useful for embedded builds.
- `-DDISABLE_PREFORK_CACHE=ON` - disable cache support for preforking modes (process shared cache)
- `-DDISABLE_TCPCACHE=ON` - disable distributed cache support (memcached-like solution support)
- `-DDISABLE_CACHE=ON` - disable caching system at all.
- `-DDISABLE_GZIP=ON` - disable output gzip compression support (eliminates dependency on zlib)
_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
## Examples
### POSIX Operating Systems
I assume that you are in a terminal in the build directory inside the CppCMS source directory.
Build under Linux, FreeBSD and Cygwin:
cmake ..
make
make test
make install
Build under OpenSolaris with SunStudio
cmake -DCMAKE_C_COMPILER=/usr/bin/suncc -DCMAKE_CXX_COMPILER=/usr/bin/sunCC ..
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
### Microsoft Windows
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:\3rd_part\lib;%PATH%
set PATH=d:\projects\cppcms\build\booster;%PATH%
Under bash:
export PATH=/c/3rd_part/lib:"$PATH"
export PATH=/d/projects/cppcms/build/booster:"$PATH"
_MinGW Builds:_
For mingw builds you also need to pass a path to the mingw's
library directory, otherwise it may not find winsock
library correctly. Assuming you have mingw installed
in `c:\mingw`
Open MinGW Shell terminal
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 Builds:_
Note: You can find [a full tutorial regarding MSVC build there](/wikipp/en/page/windows_msvc_build)
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:/3rd_part/include -DCMAKE_LIBRARY_PATH=c:/3rd_part/lib -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=c:/cppcms ..
nmake
nmake test
nmake install
### 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 -DDISABLE_ICU_LOCALIZATION=ON -DCMAKE_ISTALL_PREFIX=/usr/arm-linux-eabi ..
make
make install
---
← [CppCMS versioning scheme][prev]
| [Top](#maincontent)
| [Migration to new version][next] →
[prev]: /wikipp/en/page/cppcms_versioning_scheme
[next]: /wikipp/en/page/cppcms_1x_migration

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