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 版本,问题得解。
记录之。