Автоматически копировать исполняемый файл в каталог после сборки в CLion?

Как я могу заставить CLion автоматически копировать мой скомпилированный исполняемый файл в указанный каталог после каждой сборки?

Поскольку CLion использует CMake, я думаю, это должно быть возможно с помощью некоторой команды CMake в файле CMakeLists.txt. Но я не знаю, как это сделать.


person becko    schedule 07.07.2015    source источник


Ответы (3)


Я не знаю о CLion, но обычно вы можете добавить это как шаг после сборки до целевого исполняемого файла в CMake с помощью:

add_executable(MyExe ...)
add_custom_command(TARGET MyExe 
                   POST_BUILD
                   COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:MyExe> SomeOtherDir)

См., например. Скопируйте целевой файл в другое место на этапе пост-сборки в CMake

person Florian    schedule 07.07.2015
comment
Можете ли вы объяснить, что я должен заполнить здесь? - person becko; 07.07.2015
comment
MyExe — это целевое имя вашего исполняемого файла, в моем примере из add_executable(MyExe ...). Вы просто добавляете указанную выше пользовательскую команду после строки add_executable() в файл CMakeLists.txt. Будет указан полный путь к вашему исполняемому файлу (см. выражения генератора) и скопирует его в SomeOtherDir. Если вы не укажете полный путь как SomeOtherDir, он будет относиться к ${CMAKE_CURRENT_BINARY_DIR}. - person Florian; 07.07.2015

Я использую CMAKE_RUNTIME_OUTPUT_DIRECTORY. это будет место, где ваш вывод будет компилироваться. если вам нужно сделать еще одну копию, то вам нужно будет делать трюки.

set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_PATH}/bin/client/${CMAKE_BUILD_TYPE})

person Alex Paniutin    schedule 09.08.2016

Мой любимый вариант — создать исполняемый файл в нужной папке напрямую, как описано здесь:

секрет в том, чтобы использовать целевое свойство RUNTIME_OUTPUT_DIRECTORY. Это имеет параметры для каждой конфигурации (например, RUNTIME_OUTPUT_DIRECTORY_DEBUG).

set_target_properties(mylibrary PROPERTIES
                      RUNTIME_OUTPUT_DIRECTORY_DEBUG <debug path>
                      RUNTIME_OUTPUT_DIRECTORY_RELEASE <release path>
)

См. эту ссылку для получения дополнительной информации.

Однако вы также можете запустить на своем терминале:

cmake --help-property "RUNTIME_OUTPUT_DIRECTORY"
cmake --help-property "RUNTIME_OUTPUT_DIRECTORY_<CONFIG>"

Скопировать исполняемый файл после компиляции — хорошее рабочее решение.

person Leos313    schedule 29.10.2019
comment
Это на самом деле очень аккуратный способ сделать это! - person Benjamin; 03.09.2020