У меня есть следующий CMakeLists.txt для построения библиотеки:
cmake_minimum_required(VERSION 3.7)
project(my_lib)
#...
add_library(my_lib SHARED lib.hpp lib.cpp)
Что нужно добавить, чтобы cmake генерировал 2 одинаковых .dll (или 1, а вторую копировал) в папки других проектов, которые находятся вне текущей папки?
Насколько я понимаю, надо использовать CMAKE_ARCHIVE_OUTPUT_DIRECTORY для .lib и CMAKE_LIBRARY_OUTPUT_DIRECTORY для .dll, но непонятно, как указать нужные мне папки без указания абсолютных путей.
Вот структура папок, чтобы было понятно:
my_project
|- my_lib // внутри этой папки по умолчанию появится библиотека, а надо, чтобы
|- user_1 // она была здесь
|- user_2 // и здесь
Судя по всему, вам нужны переменные CMAKE_CURRENT_BINARY_DIR - каталог сборки для текущего CMakeList и CMAKE_BINARY_DIR - каталог сборки для корневого CMakeList, для которого был запущен CMake. Через них можно абсолютный путь получить.
Тут нужно помнить, что если у пас проект с подпроектами, то в каталоге сборки будет точно такая же иерархия подпроектов, если вручную ничего не менять.
Возможно, вам нужно не копировать файлы, а искать, как правильно прописывать пути к либам из дочернего проекта в корневом CMakeList (под Linux фокус с ручным копированием не прокатит, например). Я сам с этим пока толком не разобрался, но у меня получалось нормально собирать проекты с зависимостями при помощи conan (совместно с CMake)
P.S. Если у вас не проект с подпроектами, нужно просто устанавливать либы после сборки, задавая install prefix.
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости