CPack预安装目标有何功能

时间:2018-02-09 17:40:56

标签: cmake deb cpack

我有一个使用CMake构建的相当复杂的项目。该项目使用CPack生成.deb包。当我用make构建项目时(即不构建.deb),干净的构建大约需要2分钟。但是,当我使用make package构建程序包时,构建大约需要12分钟,而CPack: - Run preinstall target for...期间花费额外的10分钟大部分时间。

使用dpkg-deb“手动”构建.deb最多需要几秒钟,所以我想知道CPack在运行预安装目标时正在做什么。

我并不一定对为什么我的项目需要很长时间才感兴趣。我更好奇预安装目标如何适应CPack构建Debian软件包的过程以及CPack如何选择在运行预安装目标时将采取的操作。

1 个答案:

答案 0 :(得分:0)

据我从CMake Mailing Listthis related question得知,“预安装目标”试图重新构建整个项目,除非没有将任何构建输出记录到stdout。 (并且可能也没有任何标志来启用并行性)

显然,仅当您使用的CMake Generator / CPACK_CMAKE_GENERATORUnix Makefiles时,才会发生这种情况,这是CMake install命令不携带任何目标依赖信息的结果。

一个可能的解决方法是向CPack询问您正在使用的生成器,例如,将CPACK_CMAKE_GENERATOR设置为Ninja。