carla/Examples/CppClient/README.md

76 lines
1.8 KiB
Markdown

C++ Client Example
==================
This example creates an application using CARLA's C++ API to connect and control
the simulator from C++.
Compile and run
---------------
Use the Makefile provided (Linux only), to compile and run the example. Note
that it expects to have a simulator running at port 2000.
```
make run
```
How it works
------------
In order to link our application against LibCarla, we need to compile LibCarla
with the same compiler and configuration we are using with our application. To
do so, we generate a CMake tool-chain file specifying the compiler and flags we
want
```cmake
# Example ToolChain.cmake
set(CMAKE_C_COMPILER /usr/bin/clang-7)
set(CMAKE_CXX_COMPILER /usr/bin/clang++-7)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14 -O3 -DNDEBUG" CACHE STRING "" FORCE)
```
We pass this file to CMake when compiling LibCarla.client
```sh
cd /path/to/carla-root-folder
make setup
cd /path/to/build-folder
cmake \
-G "Ninja" \
-DCMAKE_BUILD_TYPE=Client \
-DLIBCARLA_BUILD_RELEASE=ON \
-DLIBCARLA_BUILD_DEBUG=OFF \
-DLIBCARLA_BUILD_TEST=OFF \
-DCMAKE_TOOLCHAIN_FILE=/path/to/ToolChain.cmake \
-DCMAKE_INSTALL_PREFIX=/path/to/install-folder \
/path/to/carla-root-folder
ninja
ninja install
```
This will generate the following structure at the provided install path
```
libcarla-install/
├── include/
│ ├── carla/
│ ├── boost/
│ ├── rpc/
│ └── ...
└── lib/
├── libcarla_client.a
├── librpc.a
├── libboost_filesystem.a
└── ...
```
Our application needs to be linked at minimum against `libcarla_client.a` and
`librpc.a`. If we make use of IO functionality and/or image processing we would
need to link against `boost_filesystem`, `png`, `tiff`, and/or `jpeg`.
For more details take a look at the Makefile provided.