我正在编写CMake 2.8.11.2,CPack和NSIS的安装程序.我来到了需要调用像MSVCR这样的子安装程序的地步.这是我的CMakeLists.txt的样子:
set(CPACK_GENERATOR NSIS)
list ( APPEND CPACK_NSIS_EXTRA_INSTALL_COMMANDS " ExecWait ./tmp/vcredist_x64.exe")
list ( APPEND CPACK_NSIS_EXTRA_INSTALL_COMMANDS " ExecWait ./tmp/some-other-installer.exe")
list ( APPEND CPACK_NSIS_EXTRA_INSTALL_COMMANDS " RMDir /r ./tmp/")
INCLUDE(CPack)
Run Code Online (Sandbox Code Playgroud)
但是,生成的.nsi文件包含以下(单个)行
ExecWait ./tmp/vcredist_x64.exe; ExecWait ./tmp/some-other-installer.exe; RMDir /r ./tmp/
Run Code Online (Sandbox Code Playgroud)
这会导致错误"ExecWait需要1-2个参数,得到6",同时生成包.
如何正确地将多个额外命令传递给NSIS?
要添加多个命令,CPACK_NSIS_EXTRA_INSTALL_COMMANDS需要将其设置为多行字符串:
list ( APPEND CPACK_NSIS_EXTRA_INSTALL_COMMANDS ...
...
string (REPLACE ";" "\n" CPACK_NSIS_EXTRA_INSTALL_COMMANDS "${CPACK_NSIS_EXTRA_INSTALL_COMMANDS}")
include(CPack)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1058 次 |
| 最近记录: |