【发布时间】:2011-12-28 09:24:46
【问题描述】:
我正在使用 CMake 的 INSTALL 命令安装静态文件。
我想使用 CMake 对输出文件进行后期处理。
例如,静态文件有一个类似
的字符串v={{VERSION}}
我想替换输出文件中的{{VERSION}}。
CMake 可以做到这一点吗?
【问题讨论】:
我正在使用 CMake 的 INSTALL 命令安装静态文件。
我想使用 CMake 对输出文件进行后期处理。
例如,静态文件有一个类似
的字符串v={{VERSION}}
我想替换输出文件中的{{VERSION}}。
CMake 可以做到这一点吗?
【问题讨论】:
是的,但预处理通常在cmake 调用步骤完成,而不是在安装期间。这是使用configure_file() 命令完成的。
请注意,configure_file() 仅支持替换 ${} 或 @@ 中的值,因此如果您确实需要使用 {{}} 配置文件,您最终可能会使用 CMake 命令 file() 编写自己的函数.
最后,您需要安装您的配置文件。一定要
install(FILES ${CMAKE_BINARY_DIR}/your.file)
不仅仅是
install(FILES your.file)
因为后一个命令会安装您的源文件。
【讨论】:
file(GLOB MY_FILES "*.txt") 创建文件列表,并使用 foreach(FILE ${MY_FILES}) 为每个文件调用 configure_file()。