configure_file.rst 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. configure_file
  2. --------------
  3. Copy a file to another location and modify its contents.
  4. ::
  5. configure_file(<input> <output>
  6. [COPYONLY] [ESCAPE_QUOTES] [@ONLY]
  7. [NEWLINE_STYLE [UNIX|DOS|WIN32|LF|CRLF] ])
  8. Copies a file <input> to file <output> and substitutes variable values
  9. referenced in the file content. If <input> is a relative path it is
  10. evaluated with respect to the current source directory. The <input>
  11. must be a file, not a directory. If <output> is a relative path it is
  12. evaluated with respect to the current binary directory. If <output>
  13. names an existing directory the input file is placed in that directory
  14. with its original name.
  15. If the <input> file is modified the build system will re-run CMake to
  16. re-configure the file and generate the build system again.
  17. This command replaces any variables in the input file referenced as
  18. ${VAR} or @VAR@ with their values as determined by CMake. If a
  19. variable is not defined, it will be replaced with nothing. If
  20. COPYONLY is specified, then no variable expansion will take place. If
  21. ESCAPE_QUOTES is specified then any substituted quotes will be C-style
  22. escaped. The file will be configured with the current values of CMake
  23. variables. If @ONLY is specified, only variables of the form @VAR@
  24. will be replaced and ${VAR} will be ignored. This is useful for
  25. configuring scripts that use ${VAR}.
  26. Input file lines of the form "#cmakedefine VAR ..." will be replaced
  27. with either "#define VAR ..." or ``/* #undef VAR */`` depending on
  28. whether VAR is set in CMake to any value not considered a false
  29. constant by the if() command. (Content of "...", if any, is processed
  30. as above.) Input file lines of the form "#cmakedefine01 VAR" will be
  31. replaced with either "#define VAR 1" or "#define VAR 0" similarly.
  32. With NEWLINE_STYLE the line ending could be adjusted:
  33. ::
  34. 'UNIX' or 'LF' for \n, 'DOS', 'WIN32' or 'CRLF' for \r\n.
  35. COPYONLY must not be used with NEWLINE_STYLE.