我正在尝试使用Visual Studio 2015从源代码构建一些第三方库。我正在使用cmake 3.2.3创建解决方案文件,我正在使用ExternalProject_add模块。我以前在32位Visual Studio 2012中成功编译和构建了这个cmake代码,但没有在64位中编译。
我现在正在尝试在64位Visual Studio 2015中构建它,并且在构建过程中使用调试和发布构建时,IDE会莫名其妙地挂起。有时构建过程仍在运行,例如cl.exe,但没有任何进展,我必须进入任务管理器并结束与构建相关的所有进程。然后我尝试再次构建它,有时它会成功构建,而有时它会遇到同样的错误;在代码中的不同行冻结,具体取决于它在构建中的程度。
在尝试使用32位构建解决方案时,我遇到了同样的问题。
我不确定我的Visual Studio 2015安装是否存在问题,或者我的cmake代码是否导致此挂起问题。我对ExternalProject_add之外的cmake了解不多,所以对cmake或visual studio的任何帮助都非常感激。
这是启动构建的外部项目代码:
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环境设置的命令行构建它,并且遇到了同样的问题。
答案 0 :(得分:5)
花了一段时间和一些研究,但我认为我已经复制了你的问题并找到了解决方案。我发现cl.exe似乎挂了,但是有一个名为“cvtres.exe”的进程实际上是挂起的。当我杀死那个进程时,编译将继续进行。似乎有一个KB3118401似乎已修复的已知错误。我安装了这个补丁,因此我没有遇到过这个问题。希望这有帮助!
https://www.microsoft.com/en-us/download/details.aspx?id=51161