Windows CMake替换目标生成的文件中的文本
我有一个cmake target,它在windows上运行setup.exe,使用add_custom_target安装工具,如下所示Windows CMake替换目标生成的文件中的文本,windows,cmake,Windows,Cmake,我有一个cmake target,它在windows上运行setup.exe,使用add_custom_target安装工具,如下所示 # TOOL_TEMP_INSTALL_PATH is the installation path which is set earlier in cmake add_custom_target( install_tool COMMAND ${TOOL_TEMP_DIR}/setup.exe /DIR=${TOOL_TEMP_INSTALL_PA
# TOOL_TEMP_INSTALL_PATH is the installation path which is set earlier in cmake
add_custom_target(
install_tool
COMMAND ${TOOL_TEMP_DIR}/setup.exe /DIR=${TOOL_TEMP_INSTALL_PATH}
)
安装后,我想将位于${TOOL\u TEMP\u INSTALL\u PATH}/TOOL.ini的配置文件中的文本替换为“LICENSE\u file=Enter LICENSE server”文本行=30309@server"
以下命令将实现这一点,但这需要在安装工具目标构建后运行
file(READ "${TOOL_TEMP_INSTALL_PATH}/tool.ini" filedata)
string(REGEX REPLACE "LICENSE_FILE=Enter License server here"
"LICENSE_FILE=30309@server" filedata "${filedata}")
file(WRITE "${TOOL_TEMP_INSTALL_PATH}/tool.ini" "${filedata}")
如何将这些命令作为依赖项添加到安装工具?或者在windows上有更好的方法来实现这一点吗?因为您希望在同一目标中按顺序运行两件事情,所以可以在同一目标中使用多个命令项。困难在于命令不能处理CMake代码,只能处理系统命令。典型的解决方案是在脚本文件的子shell中调用CMake:
COMMAND${CMAKE\u COMMAND}-p路径到脚本
因此,将文件修改命令放在源代码树中名为license install.cmake
的文件中,并将另一个命令添加到add\u custom\u目标中
提示:您可能会考虑“代码> AddiSufCuffic命令< /C>”,这样您就可以在安装的树中指定一个文件作为依赖项。这将允许CMake将已安装的工具视为构建产品,如果该工具已安装,则可以跳过安装步骤。您仍然需要一个依赖于您的命令输出的
add_custom_target
,才能正确地将其挂钩