og-gzdoom/libraries/cppdap
Rachael Alexanderson 6356d87438 Squashed 'libraries/ZWidget/' changes from 02da8cdc0e..cecd34301d
cecd34301d Delay load DPI-related functions
bfc172f702 Added exception to some unimplemented functions
7c8d469bcb Added item modifications functions
847d0e6d9e Improved keyboard navigation
8c4270e0f8 Dropdown can now be closed by re-selecting it
91402c31ec Fix dropdown positioning in x11 and win32

git-subtree-dir: libraries/ZWidget
git-subtree-split: cecd34301d369400227eb0f27bad2ab41ad756d2
2025-08-13 17:17:30 -04:00
..
.github/workflows
cmake
examples
fuzz
include/dap
kokoro
src
third_party/json
tools/protocol_gen
.gitattributes
.gitignore
clang-format-all.sh
CMakeLists.txt
CONTRIBUTING
LICENSE
license-checker.cfg
README.md

cppdap

About

cppdap is a C++11 library ("SDK") implementation of the Debug Adapter Protocol, providing an API for implementing a DAP client or server.

cppdap provides C++ type-safe structures for the full DAP specification, and provides a simple way to add custom protocol messages.

Fetching dependencies

cppdap provides CMake build files to build the library, unit tests and examples.

cppdap depends on the nlohmann/json library, and the unit tests depend on the googletest library. Both are referenced as a git submodules.

Before building, fetch the git submodules with:

cd <path-to-cppdap>
git submodule update --init

Alternatively, cppdap can use the RapidJSON library or the JsonCpp library for JSON serialization. Use the CPPDAP_USE_EXTERNAL_NLOHMANN_JSON_PACKAGE, CPPDAP_USE_EXTERNAL_RAPIDJSON_PACKAGE, and CPPDAP_USE_EXTERNAL_JSONCPP_PACKAGE CMake cache variables to select which library to use.

Building

Linux and macOS

Next, generate the build files:

cd <path-to-cppdap>
mkdir build
cd build
cmake ..

You may wish to suffix the cmake .. line with any of the following flags:

  • -DCPPDAP_BUILD_TESTS=1 - Builds the cppdap unit tests
  • -DCPPDAP_BUILD_EXAMPLES=1 - Builds the cppdap examples
  • -DCPPDAP_INSTALL_VSCODE_EXAMPLES=1 - Installs the cppdap examples as Visual Studio Code extensions
  • -DCPPDAP_WARNINGS_AS_ERRORS=1 - Treats all compiler warnings as errors.

Finally, build the project:

make

Windows

cppdap can be built using Visual Studio 2019's CMake integration.

Using cppdap in your CMake project

You can build and link cppdap using add_subdirectory() in your project's CMakeLists.txt file:

set(CPPDAP_DIR <path-to-cppdap>) # example <path-to-cppdap>: "${CMAKE_CURRENT_SOURCE_DIR}/third_party/cppdap"
add_subdirectory(${CPPDAP_DIR})

This will define the cppdap library target, which you can pass to target_link_libraries():

target_link_libraries(<target> cppdap) # replace <target> with the name of your project's target

You may also wish to specify your own paths to the third party libraries used by cppdap. You can do this by setting any of the following variables before the call to add_subdirectory():

set(CPPDAP_THIRD_PARTY_DIR <third-party-root-directory>) # defaults to ${CPPDAP_DIR}/third_party
set(CPPDAP_JSON_DIR        <path-to-nlohmann-json>)      # defaults to ${CPPDAP_THIRD_PARTY_DIR}/json
set(CPPDAP_GOOGLETEST_DIR  <path-to-googletest>)         # defaults to ${CPPDAP_THIRD_PARTY_DIR}/googletest
add_subdirectory(${CPPDAP_DIR})

Note: This is not an officially supported Google product