Crow/docs/getting_started/setup.md

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

  1. Copy the /includes folder to your project's root folder.
  2. Add #!cpp #include "path/to/includes/crow.h" to your .cpp file.
  3. 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.

  1. Make sure you have python 3 installed.
  2. Open a terminal (or cmd.exe) instance in /path/to/crow/scripts.
  3. Run python merge_all.py ../include crow_all.h (replace / with \ if you're on Windows).
  4. 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).
  5. 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.

  1. Generate crow_all.h following Single header file.
  2. git clone https://github.com/microsoft/vcpkg.git
  3. .\vcpkg\bootstrap-vcpkg.bat
  4. .\vcpkg\vcpkg integrate install
  5. Create empty Visual Studio project.
  6. In solution explorer, right click the name of your project then click Open Folder in File Explorer.
  7. Copy crow_all.h, example_with_all.cpp, vcpkg.json to opened folder.
  8. Add crow_all.h to Header Files and example_with_all.cpp to Source Files.
  9. In solution explorer, right click the name of your project then click Properties.
  10. Under vcpkg, set Use Vcpkg Manifest to Yes and Additional Options to --feature-flags="versions".
  11. Set Debug/Release and x64/x86.
  12. 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.