Spec-Zone.ru › CMake 3.9

configure_file

Копирует файл в другое место и изменяет его содержимое.

configure_file(<input> <output>
               [COPYONLY] [ESCAPE_QUOTES] [@ONLY]
               [NEWLINE_STYLE [UNIX|DOS|WIN32|LF|CRLF] ])

Копирует файл <input> в файл <output> и заменяет значения переменных, указанных как @VAR@ или ${VAR} в содержимом входного файла. Каждая ссылка на переменную будет заменена текущим значением переменной или пустой строкой, если переменная не определена. Кроме того, строки входного файла вида:

#cmakedefine VAR ...

будут заменены либо:

#define VAR ...

либо:

/* #undef VAR */

в зависимости от того, установлено ли значение VAR в CMake, отличное от ложных констант, определённых командой if(). Содержимое «…», если оно присутствует после имени переменной, обрабатывается аналогично.

Строки входного файла вида #cmakedefine01 VAR будут заменены либо #define VAR 1, либо #define VAR 0, соответственно.

Если входной файл изменён, система сборки повторно выполнит CMake, чтобы переконфигурировать файл и снова сгенерировать систему сборки.

Аргументы:

<input>
Путь к входному файлу. Относительный путь обрабатывается относительно значения CMAKE_CURRENT_SOURCE_DIR. Путь к входному файлу должен указывать на файл, а не на директорию.
<output>
Путь к выходному файлу или директории. Относительный путь обрабатывается относительно значения CMAKE_CURRENT_BINARY_DIR. Если путь указывает на существующую директорию, выходной файл размещается в этой директории с тем же именем файла, что и входной файл.
COPYONLY
Копирует файл без замены ссылок на переменные или других элементов содержимого. Этот параметр не может быть использован с NEWLINE_STYLE.
ESCAPE_QUOTES
Экранирует все заменённые кавычки обратным слэшем (в стиле C).
@ONLY
Ограничивает замену переменных ссылками вида @VAR@. Это полезно для конфигурирования скриптов, использующих синтаксис ${VAR}.
NEWLINE_STYLE <style>
Указывает стиль новой строки для выходного файла. Укажите UNIX или LF для новых строк \n, или укажите DOS, WIN32, или CRLF для новых строк \r\n. Этот параметр не может быть использован с COPYONLY.

Пример

Рассмотрим дерево исходного кода, содержащее файл foo.h.in:

#cmakedefine FOO_ENABLE
#cmakedefine FOO_STRING "@FOO_STRING@"

Смежный файл CMakeLists.txt может использовать configure_file для конфигурации заголовка:

option(FOO_ENABLE "Enable Foo" ON)
if(FOO_ENABLE)
  set(FOO_STRING "foo")
endif()
configure_file(foo.h.in foo.h @ONLY)

Это создаёт файл foo.h в директории сборки, соответствующей этой директории исходных кодов. Если включён параметр FOO_ENABLE, сконфигурированный файл будет содержать:

#define FOO_ENABLE
#define FOO_STRING "foo"

В противном случае он будет содержать:

/* #undef FOO_ENABLE */
/* #undef FOO_STRING */

Затем можно использовать команду include_directories() для указания выходной директории в качестве директории заголовков:

include_directories(${CMAKE_CURRENT_BINARY_DIR})

чтобы источники могли включать заголовок как #include <foo.h>.

© 2000–2019 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.9/command/configure_file.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API