Qt CMake 的网络问题解决方案
CMake 的 FetchContent 使得在项目中使用第三方的库变得非常方便,由于是 CMake 原生支持的功能,因此不用像 vcpkg 那样进行各种设置。 例如如果想在项目中集成并使用 spdlog 可以在 CMakeLists.txt
中进行如下的声明:
include(FetchContent)
FetchContent_Declare(spdlog
GIT_REPOSITORY https://github.com/gabime/spdlog.git
GIT_TAG v1.x
)
FetchContent_MakeAvailable(spdlog)
target_link_libraries(YourProject
PRIVATE
spdlog::spdlog
)
但是在基于 CMake 的 Qt 项目中,如果打开项目的时候使用 FetchContent
时存在网络方面的问题会导致项目配置的时间很长最后失败的情况,最终项目无法进行调试和生成。
从错误信息中看到,CMake 调用了 git pull
去获取 GIT_REPOSITORY
中的仓库。但是由于网络原因 git pull
失败了,因此项目的配置过程也就失败了。由于 git 是支持通过环境变量设置代理的,由于 Windows 和 Unix 中的子进程会继承父进程的环境变量,可以通过给 CMake 指定 http_proxy
, https_proxy
等环境变量的方式让 git 使用代理进行仓库的操作。总结一下,那么问题就集中在如何在 Qt Creator 中给 CMake 设置环境变量呢?
在 Qt Creator 中的 Projects 页面,可以看到如下的设置界面:
在这个界面,我们可以对环境变量进行编辑,包括添加。
关闭 Qt Creator 并重新打开之后,再次打开项目,可以发现很快就能进行编译和调试了。
评论已关闭