gpt4 book ai didi

cmake - CPack NSIS,为 Windows 生成安装程序

转载 作者:行者123 更新时间:2023-12-02 01:49:37 33 4
gpt4 key购买 nike

我试图在 VS 项目中运行数据包生成器,它在编译时崩溃,因为在从目标和文件安装时使用了绝对路径。

 ABSOLUTE path INSTALL DESTINATION forbidden (by caller): ...

我检查了两次,所有安装目录都是相对的。我将很多变量设置为 ${PROJECT_BINARY_DIR} 的子文件夹(应该是相对的),例如:

set(INSTALL_DIR ${PROJECT_BINARY_DIR}/bin)
set(LIB_DIR ${PROJECT_BINARY_DIR}/bin/lib)
set(EXT_DIR ${PROJECT_BINARY_DIR}/bin/ext)
...

CMAKE/CPACK 是否将这些变量解释为绝对路径?如果是这样,有没有办法让 CPack 与这些变量一起正常工作?涉及子相对路径时如何使用CPack?

谢谢

最佳答案

好的,我明白了,${PROJECT_BINARY_DIR} 被解释为绝对路径,从那里它的所有子文件夹都将被拒绝。

为了避免这个问题,我将安装变量包围在 if else block 中,如果是打包的情况,那么将使用一个相对文件夹,如下所示:

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 版本上更好的功能。

再见

关于cmake - CPack NSIS,为 Windows 生成安装程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23613624/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com