The targets are dynamic libraries, so I’m putting both their .lib and .dll files in the lib folder and using the bin folder only for executables. That was not the problem. Turns out the issue was that I was installing both release and debug artifacts to the same locations. I solved it with the $ generator expression. My new install TARGETS command became
install(TARGETS ${my_targets} EXPORT my_export CONFIGURATIONS Debug;Release Runtime DESTINATION ${CMAKE_INSTALL_LIBDIR}/$<LOWER_CASE:$> CONFIGURATIONS Debug;Release ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}/$<LOWER_CASE:$> CONFIGURATIONS Debug;Release)
and when I run cmake install two times with the correct --config arguments it works as expected.