Изменить папку для выходных файлов cmake

269
24 мая 2017, 07:51

У меня есть следующий 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 // и здесь
Answer 1

Судя по всему, вам нужны переменные CMAKE_CURRENT_BINARY_DIR - каталог сборки для текущего CMakeList и CMAKE_BINARY_DIR - каталог сборки для корневого CMakeList, для которого был запущен CMake. Через них можно абсолютный путь получить.

Тут нужно помнить, что если у пас проект с подпроектами, то в каталоге сборки будет точно такая же иерархия подпроектов, если вручную ничего не менять.

Возможно, вам нужно не копировать файлы, а искать, как правильно прописывать пути к либам из дочернего проекта в корневом CMakeList (под Linux фокус с ручным копированием не прокатит, например). Я сам с этим пока толком не разобрался, но у меня получалось нормально собирать проекты с зависимостями при помощи conan (совместно с CMake)

P.S. Если у вас не проект с подпроектами, нужно просто устанавливать либы после сборки, задавая install prefix.

READ ALSO
Наследование и массив в Javascript (ES-2015+)

Наследование и массив в Javascript (ES-2015+)

Никак не могу найти ответ в Инете и разобраться что вообще происходит

203
Анимация для плеера

Анимация для плеера

Здравствуйте, подскажите, пожалуйста, как такое можно реализовать?http://10yearsmetalloinvest

272
Почему не работает выборка?

Почему не работает выборка?

Добрый день, почему я немогу обратиться к $('body') через scrollerselement, получаю: Uncaught TypeError: Cannot read property 'element' of undefined но вот так $('body')

259
Выбрать со строки только правила CSS

Выбрать со строки только правила CSS

Есть строка в которой несколько правил CSSПример:

214