Automatically wrapping a static library in "whole-archive"/"no-whole-archive" when used during linking

Starting with CMake 3.24 (currently in RC1), you can use $<LINK_LIBRARY> generator expression with feature WHOLE_ARCHIVE to achieve what you want:

add_library(L INTERFACE)
target_link_libraries(L INTERFACE "$<LINK_LIBRARY:WHOLE_ARCHIVE,internal_L>")
1 Like