Копирование или перемещение библиотек после сборки с помощью cmake

в моем проекте есть папка, содержащая сторонние библиотеки (Google test, zlib,...). Я хочу поместить библиотеки в общую папку, когда все эти библиотеки будут построены. Я пытаюсь сделать это с cmake, но у меня проблемы. Я пробую этот код:

add_subdirectory(gtest-1.6.0)    
add_custom_command(
            TARGET gtest_main 
            POST_BUILD
            COMMAND ${CMAKE_COMMAND} -E copy ${SRC_LIB_DIR}/*.a ${DST_LIB_DIR})

Я думаю, что проблема может быть в том, что целевой gtest main не определен на этом уровне, но на более низком уровне

1 ответов


Если вы выберите CMAKE_LIBRARY_OUTPUT_DIRECTORY переменная в ваших CMakeLists.txt перед вызовом add_subdirectory (и подпроект не переопределяет его), библиотеки должны попадать в нужное место.

кроме того, как это цель в подпроекте сохраняет свою зависимость от выходного файла. Что не будет работать с вашей копией-цель всегда будет устаревшей и, следовательно, перестроенной.

EDIT: я упустил из виду, что ваша команда копирования копирует.a-файлы и благодаря комментарию @Fraser I узнал также, что CMAKE_ARCHIVE_OUTPUT_DIRECTORY должен делать трюк.