Что бы при переносе вашей программы на другой комп не терялись зависимости (библиотеки), нужно эти зависимости передавать вместе с программой явно - передавать необходимые dll файлы. Обычно для этого делают установочный пакет, куда входит все необходимое плюс скрипт установки, если требуются какие-то дополнительные действия, кроме копирования файлов.
Другой вариант - использовать статическую компиляцию с библиотеками, тогда библиотека будет входить в состав вашего исполняемого файла. Размер исполняемого файла при этом будет заметно больше.
В линуксе для динамических библиотек используется каталог (/lib; /usr/lib) отличный от каталога с исполняемыми файлами (/bin, /usr/bin), поэтому появляется возможность устанавливать библиотеки через пакеты пакетного менеджера универсально для всех программ, использующих данную библиотеку. В пакете программы просто указывается зависимости от пакетов используемых библиотек.
В винде принято все зависимости программы устанавливать в каталог с исполняемым файлом программы. И тут нет какого-то общепринятого механизма делать как линуксе. Хотя никто не запрещает вам делать свой собственный софт с подобным механизмом, но сам механизм вы должны придумать и поддерживать самостоятельно в своем софте и кроме ваших программ никто больше использовать этот механизм не будет.
В cmake есть еще вариант поиска пакетов с помощью pkg-config:
https://cmake.org/cmake/help/latest/module/FindPkg...