我正在尝试使用CMAKE和CPACK自定义NSIS安装程序。 特别是我想在生成的project.nsi中包含一个外部脚本。
类似的东西:
!include "@SCRIPT_PATH@\@SCRIPT_NAME@.nsh"
为此,我按照此处显示的示例进行操作:http://www.cmake.org/Wiki/CMake:CPackNSISAdvancedTips
我复制了模板脚本文件(NSIS.template.in)并添加了所需的命令。 我现在需要相应地配置两个变量“@ SCRIPT_PATH @和@ SCRIPT_NAME @。
我尝试将它们设置为标准CMAKE变量
SET(SCRIPT_PATH "somePath")
SET(SCRIPT_NAME "someName")
但模板变量只是由CPACK
留空有任何线索吗?
答案 0 :(得分:0)
我找到了一个有效的解决方案。
首先在主要NSIS.template.in中添加占位符,例如:
@NSIS_ADDITIONAL_SCRIPT@
然后,您需要配置一个模板文件,其中包含将传递给CPACK构建的选项。
CPackOptions.cmake包含以下内容:
SET(NSIS_ADDITIONAL_SCRIPT ${NSIS_ADDITIONAL_SCRIPT})
然后在包含CPACK之前的CMAKE脚本中,您需要设置NSIS_ADDITIONAL_SCRIPT变量(路径被重做以便在窗口系统上具有正确的反斜杠集)
SET(scriptPath "[path to the script location]" )
FILE(TO_NATIVE_PATH ${scriptPath} scriptPath )
STRING(REPLACE "\\" "\\\\" scriptPath ${scriptPath} )
最后配置CPackOption.cmake文件(注意正确的斜杠和逗号数)
SET(NSIS_ADDITIONAL_SCRIPT " \"!include \\\"${scriptPath}\\\" \\n \" ")
CONFIGURE_FILE( ${CMAKE_SOURCE_DIR}/CMakeConf/CPackOptions.cmake ${PROJECT_BINARY_DIR}/CPackOptions.cmake)
如果你正确地做了一切: