How to build CppCMS 1.x.x

Requirements

In order to build CppCMS you need:

Mandatory Requirements

  • Modern C++ Compiler -- GCC, MSVC 9, Intel. See supported compilers and platforms
  • CMake 2.6 and above, 2.8.x is recommended.
  • Zlib library
  • PCRE library.
  • Python >=2.4 (but not 3)

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:

  1. 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:

  1. 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 and extract it:

  1. tar -xjf cppcms-1.0.4.tar.bz2

If you want to get latest version You need git to get the sources:

  1. 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:

  1. mkdir build
  2. cd build

Now configure the library with CMake

  1. cmake ..

Or

  1. cmake various_build_options ..

Then run

  1. make
  2. make test
  3. 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:

  1. cmake ..
  2. make
  3. make test
  4. make install

Build under OpenSolaris with SunStudio

  1. cmake -DCMAKE_C_COMPILER=/usr/bin/suncc -DCMAKE_CXX_COMPILER=/usr/bin/sunCC ..
  2. make
  3. make test
  4. make install

Build under OpenSolaris with GCC, where ICU installed in /opt/icu

  1. cmake -DCMAKE_INCLUDE_PATH=/opt/icu/include -DCMAKE_LIBRARY_PATH=/opt/icu/lib ..
  2. make
  3. make test
  4. make install

Microsoft Windows

We assume that 3rd part libraries installed in c:\3rd_part and sources are placed ind:\projects\cppcms

Note: You need to setup correct PATH variables in order to let system find all DLLs it needs.

Under cmd.exe:

  1. set PATH=c:\3rd_part\lib;%PATH%
  2. set PATH=d:\projects\cppcms\build\booster;%PATH%

Under bash:

  1. export PATH=/c/3rd_part/lib:"$PATH"
  2. 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

  1. 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 ..
  2. make
  3. make test
  4. make install

MSVC Builds:

Open MSVC Shell terminal (All Programs > Microsoft Visual Studio 2008 > Visual Studio Tools > Visual Studio 2008 Command Prompt)

  1. 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 ..
  2. nmake
  3. nmake test
  4. nmake install

Cross Compiling

The build is just ordinary CMake cross-compilation procedure. For more information readhttp://www.cmake.org/Wiki/CMake_Cross_Compiling

We would provide an example for ARM under Linux, without ICU.

Create ToolChain.cmake

  1. SET(CMAKE_SYSTEM_NAME Linux)
  2. SET(CMAKE_C_COMPILER  /usr/bin/arm-linux-gnueabi-gcc)
  3. SET(CMAKE_CXX_COMPILER /usr/bin/arm-linux-gnueabi-g++)
  4. SET(CMAKE_FIND_ROOT_PATH  /usr/arm-linux-gnueabi)
  5. SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
  6. SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
  7. SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)

Configure

  1. cmake -DCMAKE_TOOLCHAIN_FILE=ToolChain.cmake -DDISABLE_ICU_LOCALIZATION=ON  -DCMAKE_ISTALL_PREFIX=/usr/arm-linux-eabi ..
  2. make
  3. make install

How to build CppCMS 1.x.x的更多相关文章

  1. CppCMS1.0.3 Build by VS2012

    1.CppCMS简介 CppCMS是一个C++的Web开发框架(不是一个CMS).它不同于大多数其他Web开发框架,如巨蟒Django , Java的Servlets ,或C++ Wt因为它在设计和调 ...

  2. CPPCMS库在Windows下的使用

    标题:CPPCMS库在Windows下的使用时间:2012-7作者:Kagula 环境:[1]WinXP SP3[2]VisualStudio2008 SP1[3]ZLib 1.2.7[4]PCRE ...

  3. 解决 Springboot Unable to build Hibernate SessionFactory @Column命名不起作用

    问题: Springboot启动报错: Caused by: org.springframework.beans.factory.BeanCreationException: Error creati ...

  4. [WARNING] Using platform encoding (GBK actually) to copy filtered resources, i.e. build is platform

    eclipse maven clean install 报错 1. 修改properties-->resource-->utf-8仍然报错 2.修改项目pom.xml文件,增加: < ...

  5. 解决 Could not find com.android.tools.build:gradle 问题

    今天拉同事最新的代码,编译时老是报如下错误: Error:Could not find com.android.tools.build:gradle:2.2.0.Searched in the fol ...

  6. 搭建TFS 2015 Build Agent环境(一)

    Download the build agent Downloading the build agent is really simple. Navigate to your TFS control ...

  7. Go build constraints

    Go语言有一个不(奇)错(葩)的设计,就是build constraints(构建约束).可以在源码中通过注释的方式指定编译选项,比如只允许在linux下,或者在386的平台上编译啊之类的:还可以通过 ...

  8. [异常解决] How to build a gcc toolchain for nRF51 on linux (very detailed!!!)

    1.Install gcc-arm-none-eabi https://devzone.nordicsemi.com/tutorials/7/This link shows that developm ...

  9. Microsoft Build 2016 Day 2 记录(多图慎入)

    Microsoft Build 2016 Day 1 记录 Microsoft Build 2016 进行到了第二天,我觉得这一天的内容非常精彩,因为主要和开发者相关

随机推荐

  1. linux下tomcat启动正常,但是外部浏览器无法访问

    这种情况一般是由于系统防火墙设置问题导致的,这次遇到的系统是centos 7.2,防火墙由iptables改成了firewall,因此停止防火墙的命令应该是: systemctl disable fi ...

  2. c#遍历注册表

    --来自 https://blog.csdn.net/wenchangren/article/details/751863using System; using Microsoft.Win32; us ...

  3. 扩增子图表解读3热图:差异菌、OTU及功能

    热图是使用颜色来展示数值矩阵的图形.通常还会结合行.列的聚类分析,以表达实验数据多方面的结果.  热图在生物学领域应用广泛,尤其在高通量测序的结果展示中很流行,如样品-基因表达,样品-OTU相对丰度矩 ...

  4. linux mysql-workbench 创建与正式库表结构一样的表

    先在本地创建数据库 字符集选择这个 创建数据库成功 创建与正式库一样的表 step1: 连接正式库,找到要生成的表,导出创建表的sql语句 step2: 找到本地数据库,选择表,在sql执行区域复制s ...

  5. CAD把实体放到当前选择集中

    主要用到函数说明: _DMxDrawX::AddCurrentSelect 把实体放到当前选择集中,详细说明如下: 参数 说明 LONGLONG lId 实体id VARIANT_BOOL isSho ...

  6. tomcat8安装及配置

    首先是解压版的安装.很简单,直接解压到要安装的位置就OK了. 2.启动 bin目录下,执行startup.bat文件 3.浏览器中打开地址http://localhost:8080/

  7. codevs——4189 字典&&HihoCoder #1014 : Trie树

    题目描述 Description 最经,skyzhong得到了一本好厉害的字典,这个字典里整整有n个单词(1<=n<=200000) 现在skyzhong需要在字典里查询以某一段字母开头的 ...

  8. 6)STM32使用HAL库实现modbus的简单通讯

    1.判断地址.校验 2.读取本机数据并校验打包 3.发送数据包 4.本机数据长度比要读取的长度短怎么办 4.校验错误怎么办

  9. BZOJ 1452 Count 【模板】二维树状数组

    对每种颜色开一个二维树状数组 #include<cstdio> #include<algorithm> using namespace std; ; ][maxn][maxn] ...

  10. python爬虫数据解析的四种不同选择器Xpath,Beautiful Soup,pyquery,re

    这里主要是做一个关于数据爬取以后的数据解析功能的整合,方便查阅,以防混淆 主要讲到的技术有Xpath,BeautifulSoup,PyQuery,re(正则) 首先举出两个作示例的代码,方便后面举例 ...