cmake 解决 C compiler unknow 问题

win7 上用cmake 生成visual studio 工程,出现错误:

-- The C compiler identification is unknown
-- The CXX compiler identification is unknown

打开 cMakeError.log , 错误如下:

LINK : fatal error LNK1104: 无法打开文件“ucrtd.lib”

Cmake 在生成vs工程之前,会先生成一个测试工程,验证编译工具能否正常工作。这个错误就是出现在在这一步。链接阶段出现了错误。

ucrtd.lib  是universal C runtime library 的意思,是windows的一个组件。 visual studio 并不包含这个库。

在电脑中用everything 搜索,可以找到这个库, 在 C:\Program Files (x86)\Windows Kits\10\Lib\10.0.16299.0\ucrt\ 目录下。

但是为什么Cmake 没有找到这个库呢?

做了一些搜索,原来是因为 Cmake 会检测目标的windows版本,然后引用相应的windows 组件库。

这是错误是因为 CMAKE_SYSTEM_VERSION  出错了。 

添加 -DCMAKE_SYSTEM_VERSION=10.0.16299.0 参数,告诉Cmake 正确的windows 版本,问题得解。

记录之。

ref:  https://gitlab.kitware.com/cmake/cmake/issues/17730

你可能感兴趣的:(工程,踩坑)