今日踩坑之见鬼了

今天尝试在windows平台下使用cmake对darknet工程进行编译(交叉编译) 但cmake却一直无法工作,报错显示

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

CMake Error at CMakeLists.txt:14 (project):
No CMAKE_C_COMPILER could be found.

CMake Error at CMakeLists.txt:14 (project):
No CMAKE_CXX_COMPILER could be found.

Configuring incomplete, errors occurred!

研究查询得知,该提示表明cmake没能完成demo的构建. 查看errorlog发现,核心错误为

c1 : fatal error C1083: 无法打开源文件: “CMakeCCompilerId.c”: No such file or directory [D:\******\CMakeFiles\3.14.0\CompilerIdC\CompilerIdC.vcxproj]

但继续查看,发现该文件就在工程文件的同一目录下! 没有理由打不开啊.

再次多方研究,尝试了重装VS,浪费一堆空间和流量添加了更多没用的模块,重装数次cmake以及修改各种环境变量后宣告无果. 仔细思考后猜想会不会就只是读取文件的问题
之后我测试了直接打开vs的工程文件进行构建
结果和之前类似

再次修改各种项目参数后无果,确认不是找不到文件而是vs就是打不开它(管理员权限也没用),尝试将其移到桌面进行处理,奇怪的是,把该项目移到桌面后编译却成功了…… 把darknet项目移到桌面后也可以编译了?…(黑人问号)

在我仔细认真的进行了几项对比试验后发现,发现我原始通过wsl中的git clone下来的项目就不能在cmake中进行编译,但如果是在cmd的git中 clone下来或是直接在浏览器中下载的项目却都可以运行成功??????真的是tm的绝了… 对比后我认为两个git命令都执行的很正确,两个项目也并没有任何的文件上的区别.

再想起来有些人提过关于文件权限的事,最后猜测可能确实与其有关
虽然我使用的是的windows平台所以确实很少有文件权限的问题(并且显然该处缺少的甚至只是读取权限),并且在用其他软件打开文件时也从没遇到任何的权限问题.
但考虑到此处的编译行为是交叉编译!(似乎是由vs提供的linux环境编译代码而生成windows平台下的应用)
而wsl在windows的文件夹中使用时确实会对linux的文件系统造成某些不可预知的问题,最终导致交叉编译没能成功,怀疑问题就在此处.
但是…这问题也太sb了吧

后记:我今天就是来踩坑的是吧,这个坑过了之后马上我就发现cuda好像还是用不了……
我可QNMDB

发表评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据