安装Visual Studio 2015并在之前的项目上运行CMake后,CMake错误表明它无法找到C编译器。
The C compiler identification is unknown
The CXX compiler identification is unknown
CMake Error at CMakeLists.txt:4 (PROJECT):
No CMAKE_C_COMPILER could be found.
CMake Error at CMakeLists.txt:4 (PROJECT):
No CMAKE_CXX_COMPILER could be found.
我在Visual Studio文件夹cl.exe
中搜索C:\Program Files\Microsoft Visual Studio 14.0
,但找不到它。
如何使用Visual Studio 2015将CMake设置为在Windows上运行?
答案 0 :(得分:113)
我找到了解决方案。 Visual Studio IDE安装成功后,它没有安装任何构建工具,因此没有安装C ++编译器。
尝试手动create a C++ project in the Visual Studio 2015 GUI我能够提示它下载C ++包。然后CMake能够毫无困难地找到编译器。
答案 1 :(得分:31)
以下是适用于我的解决方案:
希望它应该没有问题。
答案 2 :(得分:28)
我查看了CMakeError.log文件,发现有关cannot run 'rc.exe'
我搜索并发现this answer将RC.Exe和RcDll.Dll从Microsoft SDKs bin复制到VC bin,然后CMake工作。
编辑:The top answer to another question表明它是一个PATH问题,因此可能足以确保Microsoft SDK bin位于您的PATH中。
答案 3 :(得分:14)
确保在生成器中使用正确版本的Visual Studio。安装Visual Studio 14时,我错误地选择了Visual Studio 15。
答案 4 :(得分:11)
答案 5 :(得分:8)
如果以上解决方案均无效,请停止并进行健全性检查。
我使用错误的-G <config>
字符串进行了刻录,这给了我这个误导性错误。
首先,从VS命令提示符而不是常规命令提示符运行。你可以找到它
Start Menu -> Visual Studio 2015 -> MSBuild Command Prompt for VS2015
这将设置VS工具的所有正确路径等。
现在看看cmake提供了哪些发电机......
cmake -help
...<snip>...
The following generators are available on this platform:
Visual Studio 15 [arch] = Generates Visual Studio 15 project files.
Optional [arch] can be "Win64" or "ARM".
Visual Studio 14 2015 [arch] = Generates Visual Studio 2015 project files.
Optional [arch] can be "Win64" or "ARM".
Visual Studio 12 2013 [arch] = Generates Visual Studio 2013 project files.
Optional [arch] can be "Win64" or "ARM".
Visual Studio 11 2012 [arch] = Generates Visual Studio 2012 project files.
Optional [arch] can be "Win64" or "ARM".
Visual Studio 10 2010 [arch] = Generates Visual Studio 2010 project files.
Optional [arch] can be "Win64" or "IA64".
...
然后选择适当的字符串 添加[arch]。
mkdir _build
cd _build
cmake .. -G "Visual Studio 15 Win64"
在子目录中运行cmake可以更轻松地执行“清理”工作。因为你可以删除该目录中的所有内容。
我升级到Visual Studio 15,但没有注意,并试图在2012年生成。
答案 6 :(得分:6)
对我来说,我检查了CMakeError.log
文件并找到了:
[...]错误MSB8036:找不到Windows SDK版本8.1。安装所需版本的Windows SDK或在项目属性页中更改SDK版本,或右键单击解决方案并选择“重新定位解决方案”。
尽管在Windows 7上使用Visual Studio 2017,但似乎CMake正在尝试使用Windows 8.1 SDK构建其检测项目。
我使用Visual Studio安装程序添加该组件,现在CMake很高兴作为一个蛤蜊。
答案 7 :(得分:4)
菜单→Visual Studio 2015→Visual Studio 2015的MSBuild命令提示符。然后CMake可以找到pytest 3.2.5
。
cl.exe
将上部路径更改为Windows SDK的安装位置。
CMake可以找到set PATH="c:\Program Files (x86)\Windows Kits\10\bin\10.0.16299.0\x64\";%PATH%
。
cd到rc.exe
的路径并执行:
CMakeLists.txt
CMake应该获取md .build
cd .build
cmake .. -G "Visual Studio 14 2015 Win64" -DCMAKE_BUILD_TYPE=Release
cmake --build .
之后的参数。使用-G
;你可能有也可能没有发电机。
答案 8 :(得分:1)
如果您使用的是Visual Studio 2017,则至少需要CMake 3.8!
答案 9 :(得分:1)
我在Windows 10下使用Visual Studio 2015 Professional时遇到了这个问题,而Visual Studio 2015 Express起作用了!在Windows 7下,两个Visual Studio版本过去都可以工作。
通过Visual Studio 2015 Professional IDE创建的新项目已成功编译,但CMake无法找到编译器报告:
The C compiler identification is unknown
The CXX compiler identification is unknown
我将CMake从3.4.1升级到3.11.4,现在问题解决了。
答案 10 :(得分:1)
作为已接受答案的替代方案,您可以直接安装C ++ as described here。
答案 11 :(得分:0)
一些提示:
我的问题是之前声明的组合:我已将编译器版本设置为15而不是14,并且在更正后,我不得不删除缓存。
我还以管理员身份启动了Visual Studio命令提示符,并从那里运行了cmake-gui.exe
然后一切都按预期工作。
答案 12 :(得分:0)
检查名称文件夹是否太长。
答案 13 :(得分:0)
我在CMake GUI和VS 21019社区版中遇到了这个问题。我想我可能已经在Visual Studio之前安装了CMake-肯定是在将CMake 3.15.2更新到3.15.3之后,问题消失了。
答案 14 :(得分:0)
在返回的CMakeFiles中检查CMakeErrors.log:
C:\ Program文件 (x86)\ MSBuild \ Microsoft.Cpp \ v4.0 \ V140 \ Platforms \ x64 \ PlatformToolsets \ v140_xp \ Toolset.targets(36,5):警告MSB8003:找不到WindowsSdkDir_71A变量 注册表。 TargetFrameworkVersion或PlatformToolset可以设置为 版本号无效。
该错误意味着未安装XP(v140_xp)的生成工具。要修复它,我在单个组件选项卡下的Visual Studio 2019安装程序中安装了适当的功能:
答案 15 :(得分:0)
我遇到一个相关的问题:运行cmake --help
时,Visual C ++生成器甚至不在列表中。
我在控制台中运行where cmake
,发现cygwin还提供了自己的 cmake.exe 文件,该文件正在使用中。更改PATH中目录的顺序可以解决此问题。
答案 16 :(得分:0)
通过添加缺少的组件来解决 修改->继续添加如下
答案 17 :(得分:0)
如果找到ARM,请查看Cmakelists.txt,您需要为ARM安装C ++,并为vc bins文件夹安装vcvarsall.bat。
这些程序包:
“不需要”用于ARM64的C ++通用Windows平台
“不需要”的ARM的Visual C ++编译器和库
“非常可能需要” ARM64的Visual C ++编译器和库
Required for finding Threads on ARM
enable_language(C)
enable_language(CXX)
然后问题可能会消失:
找不到CMAKE_C_COMPILER。
找不到CMAKE_CXX_COMPILER。
如果上述方法不能解决您的问题?
(可选)您可以通过在enable_language(C)所在的位置前面设置#in来删除cmakelists.txt中的选项C和CXX。并避免Android ARM处理器编译。
答案 18 :(得分:0)
我在stackoverflow上找到了这种解决方案,尽管没有其他解决方案,但我为我工作 如果您使用Windows 10操作系统,请执行以下步骤将解决此问题:
1)转到C:\ Program Files(x86)\ Microsoft SDKs \ Windows \ v7.1A \ Bin
2)然后从该文件复制RC.exe和RcDll
3)转到C:\ Program Files(x86)\ Microsoft Visual Studio 14.0 \ VC \ bin,然后将已复制的两个文件粘贴到其中。
这就是我希望对您有所帮助...
答案 19 :(得分:0)
在更新了Visual Studio 2017之后,我在CMake 3.12.1中遇到了这个问题。我只是重新运行CMake即可。
答案 20 :(得分:0)
我对通过CMake生成的Visual Studio 2017项目有类似的问题。使用C ++在桌面开发中安装Visual Studio时,缺少某些软件包。查看快照:
Visual Studio 2017软件包:
另外,将CMake升级到最新版本。
答案 21 :(得分:0)
我遇到了同样的问题并通过重新启动Visual Studio安装并检查以下选项来修复它:
Windows and Web Development
/ Universal Windows App Development Tools
/ Windows 10 SDK
它包含大多数应用程序中使用的标准C ++标头,因此通常也需要安装它。
答案 22 :(得分:0)
以前的解决方案都不适合我。但是我注意到虽然我安装了Visual Studio 15版(不要与Visual Studio 2015混淆),但我的计算机上创建的目录是针对Visual Studio 14的。
当我按下配置按钮时指定Visual Studio 14时,它工作正常。
答案 23 :(得分:0)
就我而言,我可以在CMakeError.log
中看到CMake无法找到Windows SDK(MSB8003: Could not find WindowsSDKDir variable from the registry
)。
可以使用以下命令在第一个CMake运行的命令行上指定版本:
-DCMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION=
我在设定之后得到了更多,但我后来遇到了更多的问题(所以我认为我的环境在某种程度上搞砸了),但也许这会帮助有这个问题的人。
答案 24 :(得分:0)
对于拥有最新Windows 10创建者版本的人来说,这可能是另一种解决方案:
Stack Overflow post Fatal error LNK1104: cannot open file 'gdi32.lib'
答案 25 :(得分:0)
在我的情况下,有一个环境变量集,这是造成此错误的原因。 从环境变量中删除cxx_flags后问题得以解决。
答案 26 :(得分:0)
在我的情况下,问题是父项目,包括googletest via
add_subdirectory(gtest_dir)
定义为
PROJECT( projname CXX )
不知何故,CMake无法识别
PROJECT(sub_project_name CXX C)
因为C编译器未在父级中设置。
我使用
解决了这个问题PROJECT( projname CXX C)
在我的主CMakeLists.txt
文件中。
答案 27 :(得分:-1)
cmake --no-warn-unused-cli -DCMAKE_EXPORT_COMPILE_COMMANDS:BOOL=TRUE -DCMAKE_BUILD_TYPE:STRING=Debug "-DCMAKE_C_COMPILER:FILEPATH=C:\Program Files\mingw-w64\x86_64-8.1.0-posix-seh -rt_v6-rev0\mingw64\bin\gcc.exe" "-DCMAKE_CXX_COMPILER:FILEPATH=C:\Program Files\mingw-w64\x86_64-8.1.0-posix-seh-rt_v6-rev0\mingw64\bin\g++.exe " -Hc:/code -Bc:/code/build -G "MinGW Makefiles"
答案 28 :(得分:-2)
因为CMake无法找到您的Visual Studio编译器。启动任何将下载所需编译器的项目,然后CMake必须能够找到它。