2023-09-19 10:57:02 -07:00
|
|
|
# wolfSSL CMake
|
|
|
|
|
|
|
|
|
|
This directory contains some supplementary functions for the [CMakeLists.txt](../CMakeLists.txt) in the root.
|
|
|
|
|
|
|
|
|
|
See also cmake notes in the [INSTALL](../INSTALL) documentation file.
|
|
|
|
|
|
2024-06-03 15:38:36 -07:00
|
|
|
If new CMake build options are added `cmake/options.h.in` must also be updated.
|
2025-06-20 11:24:58 -07:00
|
|
|
|
|
|
|
|
For more information on building wolfSSL, see the [wolfSSL Manual](https://www.wolfssl.com/documentation/manuals/wolfssl/).
|
|
|
|
|
|
|
|
|
|
In summary for cmake:
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
# From the root of the wolfSSL repo:
|
|
|
|
|
|
|
|
|
|
mkdir -p out
|
|
|
|
|
pushd out
|
|
|
|
|
cmake ..
|
|
|
|
|
cmake --build .
|
|
|
|
|
|
|
|
|
|
# View the available ciphers with:
|
|
|
|
|
./examples/client/client -e
|
|
|
|
|
popd
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
## CMake Presets
|
|
|
|
|
|
|
|
|
|
The `CMakePresets.json`; see [cmake-presets(https://cmake.org/cmake/help/latest/manual/cmake-presets.7.html)
|
|
|
|
|
|
|
|
|
|
- Cross-platform and cross-IDE.
|
|
|
|
|
|
|
|
|
|
- Standardized CMake feature (since CMake 3.19+, recommended after 3.21).
|
|
|
|
|
|
|
|
|
|
- Works in Visual Studio, VS Code, CLI, CI systems, etc..
|
|
|
|
|
|
|
|
|
|
## Visual Studio Settings
|
|
|
|
|
|
|
|
|
|
There's also a Visual Studio specific file: `CMakeSettings.json`. This the file that supports the GUI CMake settings.
|
|
|
|
|
|
|
|
|
|
See the Microsoft [CMakeSettings.json schema reference](https://learn.microsoft.com/en-us/cpp/build/cmakesettings-reference?view=msvc-170)
|
|
|
|
|
|
|
|
|
|
## Visual Studio (2022 v17.1 and later):
|
|
|
|
|
|
|
|
|
|
- Prefers `CMakePresets.json` if it exists.
|
|
|
|
|
|
|
|
|
|
- Falls back to `CMakeSettings.json` if no presets are found.
|
|
|
|
|
|
|
|
|
|
- Lets you override or extend presets via `CMakeSettings.json`.
|
|
|
|
|
|
|
|
|
|
### Recommendations:
|
|
|
|
|
|
|
|
|
|
- Use `CMakePresets.json` to define shared, cross-platform presets.
|
|
|
|
|
|
|
|
|
|
- Use `CMakeSettings.json` to define Visual Studio-specific overrides, like:
|
|
|
|
|
* Custom output directories
|
|
|
|
|
* Specific environment variables
|
|
|
|
|
* *UI-related tweaks
|
|
|
|
|
|
|
|
|
|
|