我有一个使用CMake构建的相当复杂的项目。该项目使用CPack生成.deb包。当我用make
构建项目时(即不构建.deb),干净的构建大约需要2分钟。但是,当我使用make package
构建程序包时,构建大约需要12分钟,而CPack: - Run preinstall target for...
期间花费额外的10分钟大部分时间。
使用dpkg-deb
“手动”构建.deb最多需要几秒钟,所以我想知道CPack在运行预安装目标时正在做什么。
我并不一定对为什么我的项目需要很长时间才感兴趣。我更好奇预安装目标如何适应CPack构建Debian软件包的过程以及CPack如何选择在运行预安装目标时将采取的操作。
答案 0 :(得分:0)
据我从CMake Mailing List和this related question得知,“预安装目标”试图重新构建整个项目,除非没有将任何构建输出记录到stdout。 (并且可能也没有任何标志来启用并行性)
显然,仅当您使用的CMake Generator / CPACK_CMAKE_GENERATOR
为Unix Makefiles
时,才会发生这种情况,这是CMake install
命令不携带任何目标依赖信息的结果。
一个可能的解决方法是向CPack询问您正在使用的生成器,例如,将CPACK_CMAKE_GENERATOR
设置为Ninja。