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:
- CommonLibSSE-NG bundles fmt and spdlog - we shouldn't add them separately
- CMake handles transitive dependencies - when we link CommonLibSSE::CommonLibSSE, it automatically includes its dependencies
- 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 dependenciesCMakeLists.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!