最近在vs2017、c++、vcpkg环境下进行开发,遇到了项目源码编译慢的问题,不是一般的慢,而是多加一行空格就编译七、八分钟这种慢,让人无法忍受。这两天专门针对该问题进行了详细分析。

1.刚开始查资料调研分析可能是因为*.h头文件太多,不同cpp文件同时多次包含.h导致的编译慢,对应的解决办法为采用预处理编译头进行提高编译速度。尝试过后,编译速度没啥变化,这种情况存在大量复杂头文件时有效果,而我现在这个项目头文件并不多,应该是别的原因。

2.查看编译输出信息,前面编译速度其实挺快的,就卡到dll生成这一步,7分钟时间消耗在这。

 要想搞清楚这一步在干啥,需要输出详细的编译信息(参考链接),工具-选项-项目和解决方案-生成并运行,将MSBuild输出详细级别改由最小为诊断。

 3.重新编译,输出信息卡在下图所示

最后一条信息:"fj_removert_alg.dir\Release\vcpkg.applocal.log"很关键,能看出来和vcpkg有关,找到该文件所在路径,是vs自动生成的一个中间文件。

 打开该文件,记录了vcpkg里的一些dll路径,经过观察,7分钟时间全消耗在这个文件的更新上面了,猜测应该是vs对vcpkg里的一些dll进行了一些操作处理(哪位有清楚的可以评论补充)。

 4.解决办法,将相关项目里的use vcpkg的是改为否,改完之后,vcpkg.applocal.log文件不再更新,项目编译时间也缩减到50s,问题解决。

也可在cmake命令设置项目在vs中默认不打开vcpkg,和上面效果一样

# 设置vs默认不打开vcpkg 
set_target_properties(${ALG_REMOVERT_NAME} PROPERTIES VS_GLOBAL_VcpkgEnabled false)

GitHub 加速计划 / vc / vcpkg
8
1
下载
vcpkg - 一个用于管理 C 和 C++ 库的工具,支持在 Windows、Linux 和 macOS 上安装和集成各种库。
最近提交(Master分支:3 个月前 )
1f65d845 1 天前
6de717b7 1 天前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐