Spec-Zone.ru › CMake 3.5

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 */

в зависимости от того, установлено ли в CMake значение VAR , отличное от значения, которое считается ложным константой командой 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.5/command/configure_file.html

Spec-Zone.ru

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