Cmake CPack:如何执行多个CPack\u NSIS\u EXTRA\u INSTALL\u命令?

Cmake CPack:如何执行多个CPack\u NSIS\u EXTRA\u INSTALL\u命令?,cmake,nsis,cpack,Cmake,Nsis,Cpack,我正在用CMake 2.8.11.2、CPack和NSIS编写一个安装程序。我需要打电话给MSVCR这样的内置子安装程序。下面是my 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 " Exec

我正在用CMake 2.8.11.2、CPack和NSIS编写一个安装程序。我需要打电话给MSVCR这样的内置子安装程序。下面是my 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)
但是,生成的.nsi文件包含以下(单个)行

这导致生成包时出现错误“ExecWait期望1-2个参数,得到6个”


如何将多个额外命令正确传递给NSIS?

若要添加多个命令,需要将
CPACK\u NSIS\u extra\u INSTALL\u commands
设置为多行字符串:

list ( APPEND CPACK_NSIS_EXTRA_INSTALL_COMMANDS ...
...
string (REPLACE ";" "\n" CPACK_NSIS_EXTRA_INSTALL_COMMANDS "${CPACK_NSIS_EXTRA_INSTALL_COMMANDS}")
include(CPack)

谢谢,这就解决了。
list ( APPEND CPACK_NSIS_EXTRA_INSTALL_COMMANDS ...
...
string (REPLACE ";" "\n" CPACK_NSIS_EXTRA_INSTALL_COMMANDS "${CPACK_NSIS_EXTRA_INSTALL_COMMANDS}")
include(CPack)