Cmake CPack NSIS,为Windows生成安装程序
我试图在VS项目中运行数据包生成器,它在编译时崩溃,因为在安装目标和文件时使用了绝对路径Cmake CPack NSIS,为Windows生成安装程序,cmake,nsis,cpack,Cmake,Nsis,Cpack,我试图在VS项目中运行数据包生成器,它在编译时崩溃,因为在安装目标和文件时使用了绝对路径 ABSOLUTE path INSTALL DESTINATION forbidden (by caller): ... 我检查了两次,所有安装目录都是相对的。我将相当多的变量设置为${PROJECT_BINARY_DIR}(应该是相对的)的子文件夹,例如: CMAKE/CPACK是否将这些变量解释为绝对路径? 如果是这样的话,有没有一种方法可以使CPack与这些变量一起正常工作? 当涉及次相对路径时,
ABSOLUTE path INSTALL DESTINATION forbidden (by caller): ...
我检查了两次,所有安装目录都是相对的。我将相当多的变量设置为${PROJECT_BINARY_DIR}(应该是相对的)的子文件夹,例如:
CMAKE/CPACK是否将这些变量解释为绝对路径?
如果是这样的话,有没有一种方法可以使CPack与这些变量一起正常工作?
当涉及次相对路径时,如何使用CPack
谢谢好的,我明白了,${PROJECT\u BINARY\u DIR}被解释为一个绝对路径,从那里它的所有子文件夹都将被拒绝 为了避免这个问题,我在if-else块中包围了install变量,如果是打包,则将使用相对文件夹,如下所示:
if(PACK)
set(INSTALL_DIR bin)
set(LIB_DIR bin/lib)
set(EXT_DIR /bin/ext)
...
else(PACK)
set(INSTALL_DIR ${PROJECT_BINARY_DIR}/bin)
set(LIB_DIR ${PROJECT_BINARY_DIR}/bin/lib)
set(EXT_DIR ${PROJECT_BINARY_DIR}/bin/ext)
...
endif(PACK)
这就解决了这个问题,但它确实很脏,需要在新的CPack版本上使用更好的函数
ciao此致命错误旨在告诉您应在用户执行安装程序时指定安装根目录。我猜您的cmake配置中可能有这样的代码:
INSTALL (TARGET myApp DESTINATION ${SOME_INSTALL_PATH}/bin )
如果在生成cmake缓存时为SOME\u INSTALL\u PATH
指定了绝对路径,则会在绝对安装目标上产生cmake\u ERROR\u
错误,这会给您发出消息“绝对路径安装目标禁止(由调用方)”
要解决此问题,请始终使用相对路径进行安装DESTINATION
,或仅将包前缀指定给某些\u INSTALL\u path
变量
以下是指向INSTALL
命令的链接,以供参考。
在CMake邮件列表上也有类似的问题。
INSTALL (TARGET myApp DESTINATION ${SOME_INSTALL_PATH}/bin )