InstallDirRegKey 的 CMake/CPack 命令

Posted

技术标签:

【中文标题】InstallDirRegKey 的 CMake/CPack 命令【英文标题】:CMake/CPack command for InstallDirRegKey 【发布时间】:2013-08-19 10:49:35 【问题描述】:

在 NSIS 脚本文件中,可以设置以下内容,以使用注册表项作为安装目录:

InstallDirRegKey HKCU "Software\Test" "RegEntry"

我想知道是否可以从 cmake 文件设置此命令,以便自动生成 NSIS 脚本。安装目录的设置方式大致相同:

SET(CPACK_PACKAGE_INSTALL_DIRECTORY "testDir")

非常感谢

【问题讨论】:

【参考方案1】:

我并没有完全按照您的意图进行操作,但如果您只想在 NSIS 文件中添加自定义命令,您可以这样做:

list(APPEND CPACK_NSIS_EXTRA_INSTALL_COMMANDS " 
                InstallDirRegKey HKCU \"Software\\Test\" \"RegEntry\"
               ")

注意反斜杠,需要转义双引号和文字反斜杠。我认为你可能需要 4 个反斜杠而不是 2 个作为文字反斜杠,但试试看。检查生成的 NSIS 文件,并根据需要添加更多反斜杠。

编辑:

还有另一种更完整的方式来自定义 NSIS 安装脚本。根据此:http://cmake.org/Wiki/CMake:CPackNSISAdvancedTips 您可以将 NSIS.template.in(从您的 CMake 安装中)复制到您的源代码树(在您的 CMAKE_MODULE_PATH 上的目录中)并修改它。

【讨论】:

我希望该命令在 NSIS 文件的开头运行(如果可能,在部分之外);以便将其用作默认安装位置。 据此:cmake.org/Wiki/CMake:CPackNSISAdvancedTips 您可以将 NSIS.template.in 复制到源代码树中(在您的 CMAKE_MODULE_PATH 上的目录中)并修改它。这可能会奏效。【参考方案2】:
 list(APPEND CPACK_NSIS_EXTRA_INSTALL_COMMANDS " 
                 InstallDirRegKey HKCU \"Software\\Test\" \"RegEntry\"
                ")

在我的机器上翻译成

InstallDirRegKey HKCU ;Software\Test" "RegEntry;`

不如试试

 list(APPEND CPACK_NSIS_EXTRA_INSTALL_COMMANDS " 
                InstallDirRegKey HKCU 'Software\\\\Test' 'RegEntry'
                ")

【讨论】:

以上是关于InstallDirRegKey 的 CMake/CPack 命令的主要内容,如果未能解决你的问题,请参考以下文章

cmake和makefile区别和cmake指定编译器(cmake -G)

cmake

cmake:从内部 .cmake 打印消息

cmake基础教程(13)cmake安装位置前缀CMAKE_INSTALL_PREFIX

cmake --- cmake基础

CMake中cmake_policy的使用