我正在编译本教程中的简单应用程序:https://www.johnlamp.net/cmake-tutorial-1-getting-started.html (只有main.cc、ToDo.cc和ToDo.h文件)。
我安装了Visual Studio 2015,当我使用它的生成器时,VS项目成功生成:
PS C:\data\OtherTech\cmaketest\build> cmake "Visual Studio 14 2015" ..
但是,如果我使用"Unix Makefiles“或"NMake Makefiles”生成器:
PS C:\data\OtherTech\cmaketest\build> cmake "NMake Makefiles" ..
我得到以下错误:
> PS C:\data\OtherTech\cmaketest\build> cmake -G "NMake Makefiles" ..
-- The C compiler identification is MSVC 19.0.23026.0
-- The CXX compiler identification is MSVC 19.0.23026.0
-- Check for working C compiler: C:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/bin/cl.exe
-- Check for working C compiler: C:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/bin/cl.exe -- broken
CMake Error at C:/Users/user1/Desktop/Apps/cmake-3.4.0-win32-x86/share/cmake-3.4/Modules/CMakeTestCCompiler.cmake:61 (
message):
The C compiler "C:/Program Files (x86)/Microsoft Visual Studio
14.0/VC/bin/cl.exe" is not able to compile a simple test program.
It fails with the following output:
Change Dir: C:/Data/OtherTech/cmaketest/build/CMakeFiles/CMakeTmp
Run Build Command:"nmake" "/NOLOGO" "cmTC_6fd86\fast"
"C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\nmake.exe" -f
CMakeFiles\cmTC_6fd86.dir\build.make /nologo -L
CMakeFiles\cmTC_6fd86.dir\build
Building C object CMakeFiles/cmTC_6fd86.dir/testCCompiler.c.obj
C:\PROGRA~2\MICROS~3.0\VC\bin\cl.exe
@C:\Users\user1\AppData\Local\Temp\nm5A8B.tmp
testCCompiler.c
Linking C executable cmTC_6fd86.exe
C:\Users\user1\Desktop\Apps\cmake-3.4.0-win32-x86\bin\cmake.exe -E
vs_link_exe --intdir=CMakeFiles\cmTC_6fd86.dir --manifests --
C:\PROGRA~2\MICROS~3.0\VC\bin\link.exe /nologo
@CMakeFiles\cmTC_6fd86.dir\objects1.rsp
@C:\Users\user1\AppData\Local\Temp\nm5B29.tmp
The parameter is incorrectRC Pass 1 failed to run.
NMAKE : fatal error U1077:
'C:\Users\user1\Desktop\Apps\cmake-3.4.0-win32-x86\bin\cmake.exe' :
return code '0xffffffff'
Stop.
NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio
14.0\VC\bin\nmake.exe"' : return code '0x2'
Stop.
CMake will not be able to correctly generate this project.
Call Stack (most recent call first):
CMakeLists.txt:1 (project)
-- Configuring incomplete, errors occurred!
See also "C:/Data/OtherTech/cmaketest/build/CMakeFiles/CMakeOutput.log".
See also "C:/Data/OtherTech/cmaketest/build/CMakeFiles/CMakeError.log".
另外,如果我看一下CMakeFiles\CMakeError.log
它包含错误:
LINK : fatal error LNK1104: cannot open file 'LIBCMT.lib'
下面是完整的输出:
Compiling the C compiler identification source file "CMakeCCompilerId.c" failed.
Compiler: C:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/bin/cl.exe
Build flags:
Id flags:
The output was:
2
Microsoft (R) C/C++ Optimizing Compiler Version 19.00.23026 for x86
Copyright (C) Microsoft Corporation. All rights reserved.
CMakeCCompilerId.c
Microsoft (R) Incremental Linker Version 14.00.23026.0
Copyright (C) Microsoft Corporation. All rights reserved.
/out:CMakeCCompilerId.exe
CMakeCCompilerId.obj
LINK : fatal error LNK1104: cannot open file 'LIBCMT.lib'
Compiling the CXX compiler identification source file "CMakeCXXCompilerId.cpp" failed.
Compiler: C:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/bin/cl.exe
Build flags:
Id flags:
The output was:
2
Microsoft (R) C/C++ Optimizing Compiler Version 19.00.23026 for x86
Copyright (C) Microsoft Corporation. All rights reserved.
CMakeCXXCompilerId.cpp
Microsoft (R) Incremental Linker Version 14.00.23026.0
Copyright (C) Microsoft Corporation. All rights reserved.
/out:CMakeCXXCompilerId.exe
CMakeCXXCompilerId.obj
LINK : fatal error LNK1104: cannot open file 'LIBCMT.lib'
Determining if the C compiler works failed with the following output:
Change Dir: C:/Data/OtherTech/cmaketest/build/CMakeFiles/CMakeTmp
Run Build Command:"nmake" "/NOLOGO" "cmTC_6fd86\fast"
"C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\nmake.exe" -f CMakeFiles\cmTC_6fd86.dir\build.make /nologo -L CMakeFiles\cmTC_6fd86.dir\build
Building C object CMakeFiles/cmTC_6fd86.dir/testCCompiler.c.obj
C:\PROGRA~2\MICROS~3.0\VC\bin\cl.exe @C:\Users\user1\AppData\Local\Temp\nm5A8B.tmp
testCCompiler.c
Linking C executable cmTC_6fd86.exe
C:\Users\user1\Desktop\Apps\cmake-3.4.0-win32-x86\bin\cmake.exe -E vs_link_exe --intdir=CMakeFiles\cmTC_6fd86.dir --manifests -- C:\PROGRA~2\MICROS~3.0\VC\bin\link.exe /nologo @CMakeFiles\cmTC_6fd86.dir\objects1.rsp @C:\Users\user1\AppData\Local\Temp\nm5B29.tmp
The parameter is incorrectRC Pass 1 failed to run.
NMAKE : fatal error U1077: 'C:\Users\user1\Desktop\Apps\cmake-3.4.0-win32-x86\bin\cmake.exe' : return code '0xffffffff'
Stop.
NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\nmake.exe"' : return code '0x2'
Stop.
我正在搜索有关此错误的信息,并发现可能我的PowerShell会话无法访问某些环境变量,因此我转到C:\Program Files (x86)\Microsoft Visual Studio14.0\VC并运行
.\vcvarsall.bat
来配置环境,但不幸的是这并没有帮助。
有什么办法解决这个问题吗?
发布于 2016-07-01 02:55:05
从Visual Studio本机工具命令提示符运行cmake
或cmake-gui
,而不是普通的命令提示符。这样,所有需要的路径都被正确设置,并且对cmake是可见的。
https://stackoverflow.com/questions/33816778
复制相似问题