2009-10-20 5 views
8

Я пытаюсь автоматизировать мой процесс сборки с помощью cmake. В настоящее время существует только одна проблема:cmake: Как создать скрипт для копирования Файлы данных, сопровождающие мою программу

Где, в философии cmake (если есть), самое лучшее место , чтобы скопировать файлы данных.

У меня есть библиотека и несколько примеров. Для примеров нужны данные.

В настоящее время я сделать следующее:

Я использую пользовательскую команду в каждом примере в CMakeLists.txt, чтобы скопировать все данные в CMAKE_CURRENT_BINARY_DIR на этапе после сборки. Я использую это в своем рабочем процессе отладки, так что цель установки еще не выполнена.

Это работает довольно хорошо, но имеет некоторые недостатки:

  1. Размножение происходит каждый раз, когда проект построен. С VS 2005 это иногда происходит, даже если оно еще не построено. Поскольку папки с данными являются большими, копирование требует времени, и это становится немного раздражающим.
  2. Я уверен, что это очень неуклюжий способ сделать это.

Я хочу, чтобы скопировать эти каталоги исполняемых путей, поэтому мне не нужен намеки, как установить в рабочей директории отлаживать

идеальное время, чтобы скопировать эти каталоги бы в конфигурации CMake/время генерации , по крайней мере, я так думаю. Должен ли я сделать это, и как бы я это сделал?

ответ

12

Как недавно видели в this question, вы можете использовать configure_file для копирования файлов в директории для сборки:

configure_file(${CMAKE_CURRENT_SOURCE_DIR}/input.txt 
    ${CMAKE_CURRENT_BINARY_DIR}/output.txt COPYONLY) 

Это делает это один раз во время сборки и только тогда, когда это необходимо.

+2

Спасибо! Я удивлен, что ответов на этот вопрос так мало. CMake широко используется сейчас, но все еще плохо документирован. Очень немногие люди, похоже, действительно замаскировали cmake. – AndreasT

+2

'cmake --help-full' FTW! :-) – richq