Visual Studio 2015 Win64在解决方案构建期间卡住

5

我正在尝试使用Visual Studio 2015从源代码构建一些第三方库。我正在使用cmake 3.2.3创建解决方案文件,并使用ExternalProject_add模块。以前,我曾经在32位Visual Studio 2012中成功编译和构建过这个cmake代码,但是在64位上没有成功。

现在我正在尝试在64位的Visual Studio 2015中进行构建,但是IDE在构建过程中莫名其妙地挂起,无论是debug还是release版本都是如此。有时候构建进程仍在运行,例如cl.exe,但是没有任何进展,我必须去任务管理器中结束与构建相关的所有进程。然后我再次尝试构建它,有时它可以成功构建,而另一些时候它会遇到相同的错误,在构建过程中不同的代码行处挂起,具体取决于它在构建过程中走了多远。

我在尝试在32位下构建解决方案时也遇到了相同的挂起问题。

我不确定是我的Visual Studio 2015安装出了问题,还是我的cmake代码导致了这个问题。我对除了ExternalProject_add之外的cmake并不了解,所以任何关于cmake或者Visual Studio的帮助都将不胜感激。

这里是启动构建的external project代码:

include(ExternalProject)

ExternalProject_Add(${3rdPartyLibraryName}
    DOWNLOAD_DIR ${3rdParty_CacheDir}
    URL ${3rdPartyURL}
    SOURCE_DIR ${3rdPartySourceDir}
    TMP_DIR ${3rdPartySourceDir}/${3rdPartyLibraryName}
    BUILD_COMMAND nmake /f makefile.vc MSVC_VER=${MSVC_VERSION} WIN64=YES INCDIR=${CMAKE_SOURCE_DIR}/../3rdParty/${3rdPartyLibraryName}/test/include
    BINARY_DIR ${3rdPartySourceDir}
    CMAKE_ARGS
      -DCMAKE_INSTALL_PREFIX:string=${3rdPartySourceDir}
    INSTALL_COMMAND ""
)

编辑

此外,我已尝试在设置了VS 2015环境的命令行中构建此内容,但遇到了相同的挂起问题。


请问您能否添加一个最小、完整和可验证的示例?只是猜测——因为原因可能是任何东西——我不认为这与CMake特别相关。根据我的经验,有两个可能的原因:1. 内存/磁盘空间不足(例如,当它挂起时运行了多少个cl.exe进程?)2. 一些后台Visual Studio服务会在多个VS实例中挂起。 - Florian
感谢提供链接,Florian。我很感激你的帮助。抱歉之前没有发布示例,因为我是一个 Stack Overflow 新手。当构建挂起时,没有 cl.exe 的实例,有一个 MSBuild.exe 的实例和两个 nmake 的实例。另外,我正在尝试构建的第三方库是 gdal。 - aDrow
这几乎总是一个不稳定的反恶意软件问题。禁用它,然后再试一次。特别是自从最近几个月以来,Avast已经成为病毒式的存在,尽快摆脱它。 - Hans Passant
谢谢你的建议,汉斯。我目前正在使用 McAfee 作为病毒扫描器,但我正在使用公司机器进行构建,无法关闭病毒/恶意软件扫描选项。我个人怀疑这不是病毒扫描器的问题,因为我之前在 VS 2012 中使用了它。不过我会记住你的建议。 - aDrow
1个回答

5
经过一段时间的研究,我认为我已经复制了您的问题并找到了解决方案。我发现cl.exe似乎会挂起,但实际上挂起的是一个名为"cvtres.exe"的进程。当我杀死该进程时,编译就会继续进行。似乎有一个已知的错误,KB3118401似乎可以修复。我安装了这个补丁,自从那以后我就没有遇到这个问题了。希望这可以帮助您!https://www.microsoft.com/en-us/download/details.aspx?id=51161

对我来说这不是一个解决方案,因为我使用的是Win10系统,而且这个问题是在构建过程完成时随机发生的。 - Gianpiero
如果可以的话,我会加上两个加号。这个错误真是令人沮丧! - keiv.fly

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接