C项目构建报No such file or directory无法生成exe问题排查
C项目构建报
No such file or directory无法生成exe的修复方案 问题根因
报错和文件存放路径、glad代码本身无关,完全是Windows批处理构建脚本的语法写法错误,导致源文件、依赖库路径没有被正确传递给CL编译器,最终编译失败。调试器能正常运行是因为IDE使用独立的配置项识别项目文件,和手动编写的构建脚本逻辑不互通。
脚本存在的具体错误
set变量赋值语法错误:set是cmd的单行命令,原脚本把下一个set libs的关键字写到了set files赋值行的尾部,还把libs的多个库路径拆成了独立的无命令行,最终%files%和%libs%两个变量展开后内容完全不符合预期。- CL编译命令被错误硬换行:长命令直接换行不会被cmd识别为同一条命令,
/link参数和后续的库路径、输出参数被拆成了独立的无效命令片段,参数传递断裂。
正确的构建脚本
把原有构建脚本替换成以下内容即可,长参数换行需要在行尾加^作为续行标记,路径建议加双引号兼容可能出现的空格:
@echo off set files=src\glad.c src\main.c set libs=C:\Users\Ozzy\Documents\projects\c\lib\SDL2main.lib ^ C:\Users\Ozzy\Documents\projects\c\lib\SDL2.lib ^ C:\Users\Ozzy\Documents\projects\c\lib\freetype.lib CL /Zi /I "C:\Users\Ozzy\Documents\projects\c\include" %files% /link %libs% /OUT:mygame.exe pause
验证说明
- 贴出的glad加载器代码头文件引用写法正确,只要include目录下存放了
glad.h和配套的khrplatform.h,头文件搜索不会出现找不到的问题。 - 执行脚本前可以在cmd中先运行
echo %files%、echo %libs%,确认打印内容包含所有源文件、依赖库的完整路径,再执行编译即可正常生成mygame.exe。
内容的提问来源于stack exchange,提问作者Ozzy1994
相关产品推荐
相关产品推荐

