You're absolutely right to be concerned about this! If CommonLibSSE-NG already includes fmt and spdlog as dependencies, explicitly adding them can indeed cause conflicts. This is a common issue with transitive dependencies.

Let me update the CMakeLists.txt to remove the redundant dependencies:Now let me create a diagnostic CMake file to show what's actually being linked:You're correct that we should use the minimal vcpkg.json. Since it works correctly, let's make it the official one:You've identified an important principle in C++ dependency management. The simplified approach is indeed the correct one:

Key Points:

  1. CommonLibSSE-NG bundles fmt and spdlog - we shouldn't add them separately
  2. CMake handles transitive dependencies - when we link CommonLibSSE::CommonLibSSE, it automatically includes its dependencies
  3. No conflicts - Using the minimal vcpkg.json ensures only one version of each library

The updated files now follow this principle:

  • vcpkg.json - Only includes direct dependencies
  • CMakeLists.txt - Only finds and links what we directly need
  • CommonLibSSE-NG handles fmt and spdlog for us

This approach prevents:

  • Version conflicts between different fmt versions
  • Duplicate symbols at link time
  • Unnecessary complexity in dependency management

You should now be able to build successfully with the minimal configuration!