Skip to content

Latest commit

 

History

History
52 lines (32 loc) · 2.12 KB

README.md

File metadata and controls

52 lines (32 loc) · 2.12 KB

vcpkg-example

A simple example vcpkg project that imported pulsar-client-cpp 3.4.2 as the dependency.

How to build

Before running the commands below, ensure the vcpkg has been installed. If you have already downloaded the submodule of this project, just run the following commands. If you want to specify an existing vcpkg installation directory (assuming it's VCPKG_ROOT), add the -DCMAKE_TOOLCHAIN_FILE=$VCPKG_ROOT/scripts/buildsystems/vcpkg.cmake option to the 1st command.

cmake -B build
cmake --build build

Then the main executable will be generated under ./build for single-configuration generators or build/Debug for multi-configuration generators.

How to link release libraries

By default, debug libraries are linked so that the executable can be debugged by debuggers. However, when used for production, release libraries should be linked for better performance.

See cmake-generators for the concept of CMake Generator.

Single-configuration generator

With single-configuration generators like Unix Makefiles on Linux and macOS, you need to specify the CMAKE_BUILD_TYPE.

cmake -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build

The main executable will still be generated under the ./build directory but release libraries are linked now.

Multi-configuration generator

With multi-configuration generators like Visual Studio on Windows, you just need to specify the --config option.

cmake -B build
cmake --build build --config Release

The main executable that links release libraries will be generated under the ./build/Release directory.

Link static libraries on Windows

The default vcpkg triplet is x64-windows on Windows. If you changed the triplet for static libraries, like x64-windows-static, you need to add a line before the project(PulsarDemo CXX) in CMakeLists.txt.

set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>")

See CMAKE_MSVC_RUNTIME_LIBRARY for details.