Cmake File COPY между дисками

Не работает следующее:

cmake file ( copy "C:/pathtofile/file.file" DESTINATION "D:/pathtofile2/file2.file" )

Есть ли способ добиться того же с помощью cmake?


person codeMetis    schedule 18.05.2017    source источник


Ответы (2)


В документации указано, что DESTINATION должен быть каталогом. Поэтому переименование файла не работает таким образом.

execute_process(COMMAND ${CMAKE_COMMAND} -E copy "C:/pathtofile/file.file" "D:/pathtofile2/file2.file")

должно сработать.

person vre    schedule 18.05.2017
comment
Вы правы на 100%, однако я думаю, что configure_file( C:/pathtofile/file.file D:/pathtofile2/file2.file) круче. - person codeMetis; 18.05.2017
comment
Вы думаете, что это непонятный код, если он у меня вызывает configure_file? или ненужная обработка? - person codeMetis; 18.05.2017
comment
Я так не думаю. Но я использую configure_file только в тех случаях, когда надо сделать подстановку переменных. Параметр COPYONLY имеет решающее значение для configure_file для вашего первого случая. Он говорит: что бы ни было в файле, оставьте его в покое. - person vre; 18.05.2017

cmakes фантастическая настройка файловой системы будет работать. Файлы могут иметь разные имена, но в основном, если он находит какие-либо переменные, которые могут быть расширены с помощью cmake, такие как ${cmake_root_dir} или $ENV{localappdata}, он отредактирует файл, заменит переменные их значениями и сохранит их в новом место под новым названием. Поэтому, если переменных нет, он просто копирует.

Configure_file( C:/pathtofile/file.file" "D:/pathtofile2/file2.file")

Если по какой-либо причине у вас есть переменные стиля cmake, и вы не хотите, чтобы они расширялись, используйте @Only, поскольку он будет расширять только переменные, окруженные «@»:

Configure_file( C:/pathtofile/file.file" "D:/pathtofile2/file2.file" @ONLY)
person codeMetis    schedule 18.05.2017