2019-04-16 19:15:36 +08:00
|
|
|
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
|
2022-04-19 23:06:38 +08:00
|
|
|
set(CMAKE_C_COMPILER /usr/bin/clang-8)
|
|
|
|
set(CMAKE_CXX_COMPILER /usr/bin/clang++-8)
|
2019-04-16 19:15:36 +08:00
|
|
|
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
|
|
|
|
|
|
|
|
```
|
2020-04-24 16:08:24 +08:00
|
|
|
libcarla-install
|
|
|
|
├── include
|
|
|
|
│ ├── carla
|
|
|
|
│ ├── cephes
|
|
|
|
│ ├── pugixml
|
|
|
|
| ├── ...
|
|
|
|
│ └── system
|
|
|
|
│ ├── boost
|
|
|
|
│ ├── recast
|
|
|
|
│ └── rpc
|
|
|
|
└── lib
|
2019-04-16 19:15:36 +08:00
|
|
|
├── libcarla_client.a
|
|
|
|
├── librpc.a
|
|
|
|
├── libboost_filesystem.a
|
|
|
|
└── ...
|
|
|
|
```
|
|
|
|
|
2020-04-24 16:08:24 +08:00
|
|
|
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`.
|
2019-04-16 19:15:36 +08:00
|
|
|
|
|
|
|
For more details take a look at the Makefile provided.
|