cmake 解决 C compiler unknow 问题

本文详细解析了在Windows7系统中使用CMake生成VisualStudio工程时遇到的链接错误“无法打开文件‘ucrtd.lib’”。通过调整CMAKE_SYSTEM_VERSION参数至正确版本(10.0.16299.0),成功解决了C和C++编译器识别未知的问题,确保了Universal C Runtime Library的正确引用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值