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
。
示例
configure_file(
${Slicer_SOURCE_DIR}/CMake/qSlicerExport.h.in
${CMAKE_CURRENT_BINARY_DIR}/${MY_EXPORT_HEADER_PREFIX}Export.h
)
qSlicerExport.h.in
/*=auto=========================================================================
Portions (c) Copyright 2005 Brigham and Women's Hospital (BWH)
All Rights Reserved.
See COPYRIGHT.txt
or http://www.slicer.org/copyright/copyright.txt for details.
Program: 3D Slicer
=========================================================================auto=*/
// .NAME __@MY_EXPORT_HEADER_PREFIX@Export - manage Windows system differences
// .SECTION Description
// The __@MY_EXPORT_HEADER_PREFIX@Export captures some system differences between Unix
// and Windows operating systems.
#ifndef __@MY_EXPORT_HEADER_PREFIX@Export_h
#define __@MY_EXPORT_HEADER_PREFIX@Export_h
#if defined(WIN32) && !defined(@MY_LIBNAME@_STATIC)
#if defined(@MY_LIBNAME@_EXPORTS)
#define @MY_LIBRARY_EXPORT_DIRECTIVE@ __declspec( dllexport )
#else
#define @MY_LIBRARY_EXPORT_DIRECTIVE@ __declspec( dllimport )
#endif
#else
#define @MY_LIBRARY_EXPORT_DIRECTIVE@
#endif
@Slicer_EXPORT_HEADER_CUSTOM_CONTENT@
#endif
qSlicerAppExport.h
/*=auto=========================================================================
Portions (c) Copyright 2005 Brigham and Women's Hospital (BWH)
All Rights Reserved.
See COPYRIGHT.txt
or http://www.slicer.org/copyright/copyright.txt for details.
Program: 3D Slicer
=========================================================================auto=*/
// .NAME __qSlicerAppExport - manage Windows system differences
// .SECTION Description
// The __qSlicerAppExport captures some system differences between Unix
// and Windows operating systems.
#ifndef __qSlicerAppExport_h
#define __qSlicerAppExport_h
#if defined(WIN32) && !defined(qSlicerApp_STATIC)
#if defined(qSlicerApp_EXPORTS)
#define Q_SLICER_APP_EXPORT __declspec( dllexport )
#else
#define Q_SLICER_APP_EXPORT __declspec( dllimport )
#endif
#else
#define Q_SLICER_APP_EXPORT
#endif
#endif
更多详细参考:https://cmake.org/cmake/help/v3.2/command/configure_file.html