Making it the librarys responsibility to ensure shared objects are copied?

Before I write a proposal, I wanted to check my facts on how so/dylib/dll copy requirements are supposed to be stipulated in current CMake.

Firstly this is separate to the install concern: putting everything into the build folder can be essential to testing/debugging.

s.o, and bots like copilot/chatgpt have a few stock solutions to ensuring that DLLs etc get copied to executable output directories. Hope the executable remembers to add_custom_command with generator expressions; build up a global with a list of dynamics and hope the executable remembers to add_custom_command with it; or add_custom_command at the shared target, wrap in a function and have your consumers invoke that, repeat until executable.

In each case, you have to hope nobody downstream forgets to do a post-build step.

Many of the “how to build a linked library” cmake examples deliberately (or unknowingly) avoid this issue by having both exe and dylib in the same directory. I made a simple separation-of-concerns example here: GitHub - kfsone/cmake-dll: Demonstrate how to ensure your DLL arrives with your binary

Is this understanding still accurate?