4.9 KiB
This page explains how to set Crow up for use with your project.
##Requirements
-
C++ compiler with C++14 support.
- Crow's CI uses g++-9.3 and clang-7.0 running on AMD64 (x86_64) and ARM64v8
-
boost library (1.70 or later).
-
(optional) ZLib for HTTP Compression.
-
(optional) CMake and Python3 to build tests and/or examples.
-
(optional) Linking with jemalloc/tcmalloc is recommended for speed. !!!note
While using Boost 1.70 or later is recommended, it may be possible to compile a Crow application with version 1.64
##Installing Requirements !!! note
The Linux requirements are for developing and compiling a Crow application. Running a built application requires the actual libraries rather than just the development headers.
###Ubuntu
sudo apt-get install build-essential libboost-all-dev
###Non Debian based GNU/Linux Use your package manager to install the following:
- GCC and G++ (or Clang and Clang++)
- Boost Development headers (sometimes part of the Boost package itself)
###OSX
brew install boost
###Windows Microsoft Visual Studio 2019 (older versions not tested)
##Downloading
Either run git clone https://github.com/crowcpp/crow.git
or download crow_all.h
from the releases section. You can also download a zip of the project on github.
##Includes folder
- Copy the
/includes
folder to your project's root folder. - Add
#!cpp #include "path/to/includes/crow.h"
to your.cpp
file. - For any middlewares, add
#!cpp #include "path/to/includes/middlewares/some_middleware.h"
.
##Single header file
If you've downloaded crow_all.h
, you can skip to step 4.
- Make sure you have python 3 installed.
- Open a terminal (or
cmd.exe
) instance in/path/to/crow/scripts
. - Run
python merge_all.py ../include crow_all.h
(replace/
with\
if you're on Windows). - Copy the
crow_all.h
file to where you put your libraries (if you don't know where this is, you can put it anywhere). - Add
#!cpp #include "path/to/crow_all.h"
to your.cpp
file.
Note: All middlewares are included with the merged header file, if you would like to include or exclude middlewares use the-e
or-i
arguments.
##building via CLI To build a crow Project, do the following:
###GCC (G++)
- Release:
g++ main.cpp -lpthread -lboost_system
. - Debug:
g++ main.cpp -ggdb -lpthread -lboost_system -DCROW_ENABLE_DEBUG
. - SSL:
g++ main.cpp -lssl -lcrypto -lpthread -lboost_system -DCROW_ENABLE_SSL
.
###Clang
- Release:
clang++ main.cpp -lpthread -lboost_system
. - Debug:
clang++ main.cpp -g -lpthread -lboost_system -DCROW_ENABLE_DEBUG
. - SSL:
clang++ main.cpp -lssl -lcrypto -lpthread -lboost_system -DCROW_ENABLE_SSL
.
###Microsoft Visual Studio 2019
The following guide will use example_with_all.cpp
as the Crow application for demonstration purposes.
- Generate
crow_all.h
following Single header file. git clone https://github.com/microsoft/vcpkg.git
.\vcpkg\bootstrap-vcpkg.bat
.\vcpkg\vcpkg integrate install
- Create empty Visual Studio project.
- In solution explorer, right click the name of your project then click
Open Folder in File Explorer
. - Copy
crow_all.h
,example_with_all.cpp
,vcpkg.json
to opened folder. - Add
crow_all.h
toHeader Files
andexample_with_all.cpp
toSource Files
. - In solution explorer, right click the name of your project then click
Properties
. - Under
vcpkg
, setUse Vcpkg Manifest
toYes
andAdditional Options
to--feature-flags="versions"
. - Set
Debug/Release
andx64/x86
. - Run.
##building via CMake
Add the following to your CMakeLists.txt
:
find_package(Threads)
find_package(ZLIB)
find_package(OpenSSL)
if(OPENSSL_FOUND)
include_directories(${OPENSSL_INCLUDE_DIR})
endif()
if (NOT CMAKE_BUILD_TYPE)
message(STATUS "No build type selected, default to Release")
set(CMAKE_BUILD_TYPE "Release")
endif()
if (MSVC)
set(Boost_USE_STATIC_LIBS "On")
find_package( Boost 1.70 COMPONENTS system thread regex REQUIRED )
else()
find_package( Boost 1.70 COMPONENTS system thread REQUIRED )
endif()
include_directories(${Boost_INCLUDE_DIR})
set(PROJECT_INCLUDE_DIR ${PROJECT_SOURCE_DIR}/include)
include_directories("${PROJECT_INCLUDE_DIR}")
!!!note
The last 2 lines are unnecessary if you're using `crow_all.h`.
##Building Crow tests and examples Out-of-source build with CMake is recommended.
mkdir build
cd build
cmake ..
make
Running Cmake will create crow_all.h
file and place it in the build directory.
You can run tests with following command:
ctest -V
##Installing Crow
if you wish to use Crow globally without copying crow_all.h
in your projects, you can install Crow on your machine with the procedure below.
mkdir build
cd build
cmake ..
make install
make install
will copy crow_all.h
automatically in your /usr/local/include
thus making it available globally for use.