Multiple Static -> Static MSVC: lib.exe Linux: ar -rcT libgaea.a libgaea_base.a libgaea_config.a Apple: lipo -create libgaea_base.a libgaea_config.a -output libgaea.a libtool XMake supports merging static libraries: Ref
Multiple Static -> Shared There was a CMake snippet which is a cross-platform solution on gist. Unfortunately cannot be found again.
Now CMake provides a generator expression, LINK_LIBRARY, to solve this issue. 🎉
MSVC: /WHOLE_ARCHIVE gcc: --whole-archive Clang: --force_load Circular dependencies CMake: target_link_libraries(foobar PRIVATE $<LINK_GROUP:RESCAN,foo,bar>) # https://cmake.