Vix.cpp v2.1.13

Vix.cpp v2.1.13 is an SDK packaging and CMake export reliability release. This release fixes the cache module’s nlohmann_json integration, corrects FetchContent usage order, improves header-only fallback handling, and completes the export-safe packaging work needed for reliable SDK installation across modules. The focus of this release is export correctness. A module can build correctly inside the source tree and still fail when installed if its dependency model leaks non-exported targets or build-only paths.

Export-safe nlohmann_json integration

The main fix in Vix.cpp v2.1.13 is making the cache module’s nlohmann_json integration export-safe. The previous integration could link against FetchContent-created targets in a way that was valid during the build but invalid during installation and package export. That could break:

install(EXPORT VixTargets ...)

Vix.cpp v2.1.13 removes invalid linkage to FetchContent targets and ensures the header-only fallback does not leak into exported package metadata incorrectly.

Correct FetchContent usage order

This release also fixes the FetchContent call sequence used for nlohmann_json. The previous order could cause configuration errors such as:

No content details recorded for nlohmann_json

That kind of failure is easy to miss during local development but can break clean CI builds, SDK packaging, and fresh consumer environments. Vix.cpp v2.1.13 corrects the sequence so fallback dependency handling behaves consistently.

Header-only fallback handling

The cache module now handles header-only fallback includes more carefully. Fallback JSON headers are exposed only at build time and are not exported as external targets. This distinction is important in CMake packaging. Build-tree usage and install-tree usage are not the same thing. A dependency path that is valid while compiling Vix may not be valid after the SDK is installed elsewhere.

SDK install reliability

This release improves SDK installation reliability for the cache module in both static and header-only modes. The module can now install correctly without missing dependencies or leaking invalid external targets. This is an important step for users who consume Vix as an installed SDK instead of building everything from the source tree.

CMake export consistency

Vix.cpp v2.1.13 improves CMake export consistency across modules. All modules now follow a more consistent pattern for handling external dependencies in export sets. This reduces the risk that one module solves dependency handling differently from another module and accidentally breaks installed package usage. For a modular C++ ecosystem, consistency in export behavior is not optional. It is required for downstream reliability.

Fallback dependency handling

JSON fallback handling is also improved. When a system package is not available, the fallback dependency is handled correctly and installed with the SDK when needed. This makes the SDK more portable in environments where users do not have every dependency installed globally.

Highlights

  • Made nlohmann_json integration export-safe in the cache module.
  • Removed invalid linkage to FetchContent targets.
  • Fixed install(EXPORT VixTargets ...) failures caused by cache dependency handling.
  • Corrected FetchContent usage order.
  • Fixed No content details recorded for nlohmann_json configure errors.
  • Improved header-only fallback include handling.
  • Ensured fallback JSON headers are build-time only when appropriate.
  • Improved SDK install reliability in static and header-only modes.
  • Improved CMake export consistency across modules.
  • Improved fallback dependency handling when system JSON packages are unavailable.
  • Finalized export-safe SDK packaging across modules.

Compatibility

Vix.cpp v2.1.13 introduces no breaking changes. Existing users of the cache module remain compatible. The main difference is that SDK installation and exported package usage should now be more reliable, especially when nlohmann_json is provided through fallback handling instead of a system package.

Notes

Vix.cpp v2.1.12 stabilized JSON and SQLite integration. Vix.cpp v2.1.13 completes the follow-up work for the cache module and finalizes export-safe SDK packaging across the affected modules. This release is important because C++ package exports must work outside the original build tree. Vix modules should be usable after installation without leaking internal FetchContent targets, temporary include paths, or incomplete dependency metadata.