carla/Examples/CppClient/README.md

81 lines
2.0 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-8)
set(CMAKE_CXX_COMPILER /usr/bin/clang++-8)
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
│   ├── cephes
│   ├── pugixml
| ├── ...
│   └── system
│   ├── boost
│   ├── recast
│   └── rpc
└── lib
├── libcarla_client.a
├── librpc.a
├── libboost_filesystem.a
└── ...
```
Our application needs to be linked at minimum against `libcarla_client.a`,
`librpc.a`, `libRecast.a`, and `libDetour*.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.