Vix.cpp v2.1.9
Vix.cpp v2.1.9 is a cross-platform build reliability release.
This release completes the transition to explicit fmt integration, fixes macOS header resolution issues, improves dependency propagation for logging utilities, removes fragile spdlog detection logic, and simplifies CMake dependency handling across platforms.
The focus of this release is predictable dependency configuration. Vix modules should expose the headers and libraries they require without depending on fragile implicit behavior.
fmt header resolution on macOS
The main fix in Vix.cpp v2.1.9 is resolving a fmt header include failure on macOS.
Some builds could fail when headers such as:
#include <fmt/ostream.h>were not resolved correctly.
Vix.cpp v2.1.9 fixes this by linking fmt as a direct dependency where it is required.
This matters because header availability should not depend on accidental transitive includes or platform-specific package layout.
Logging dependency propagation
This release also corrects dependency propagation for the logging module.
fmt is now exposed as a PUBLIC dependency where needed, ensuring headers are available to all consumers that include Vix logging-related headers.
That is important for installed packages and downstream CMake projects. If a public header requires a dependency, that dependency must be visible to consumers.
Otherwise, the module may build internally but fail when used from another project.
Simplified spdlog and fmt configuration
Vix.cpp v2.1.9 removes fragile spdlog and fmt detection logic.
Previous build configuration included conditional handling around SPDLOG_FMT_EXTERNAL. That made the build harder to reason about and created platform-specific fragility.
This release simplifies the model with explicit and predictable linking.
The goal is clearer CMake behavior: dependencies should be declared directly instead of inferred through conditional paths.
Cross-platform build reliability
Dependency handling for spdlog and fmt is now more consistent across Linux, macOS, and Windows.
This improves CI stability and makes local builds easier to reproduce.
For a C++ runtime ecosystem, cross-platform reliability depends heavily on correct dependency propagation. The same code should not require different hidden assumptions on each platform.
CMake clarity
This release improves CMake maintainability by simplifying dependency configuration.
Explicit dependency links are easier to debug, easier to export, and easier for downstream projects to consume.
Vix.cpp v2.1.9 continues the cleanup started in v2.1.8 by completing the fmt migration at the CMake level.
Highlights
- Fixed
fmtheader include failure on macOS. - Ensured
<fmt/ostream.h>resolves correctly. - Linked
fmtas a direct dependency where required. - Corrected dependency propagation for the logging module.
- Exposed
fmtas aPUBLICdependency for consumers. - Removed fragile
spdlogfmt detection logic. - Removed conditional dependency behavior around
SPDLOG_FMT_EXTERNAL. - Improved cross-platform build reliability.
- Unified
spdlogandfmtdependency handling across Linux, macOS, and Windows. - Improved CMake clarity and maintainability.
- Simplified dependency configuration with explicit linking.
Compatibility
Vix.cpp v2.1.9 introduces no breaking changes.
Existing projects remain compatible.
The main difference is that projects consuming logging-related headers should now receive the required fmt dependency more reliably.
macOS builds should no longer fail because of missing fmt headers such as <fmt/ostream.h>.
Notes
Vix.cpp v2.1.8 introduced the fmt migration but missed proper linkage in CMake.
Vix.cpp v2.1.9 completes that transition and stabilizes dependency handling across supported platforms.
This release is important because clean dependency propagation is part of the public API contract of a C++ SDK. If a module exposes headers that require a dependency, the build system must expose that dependency correctly too.