如何解决已创建Makefile却出现“No targets specified and no makefile found”错误?
解决SDL2编译及Makefile识别问题
一、「no targets specified and no makefile found」错误的解决方法
- 检查Makefile命名:必须严格命名为
Makefile(首字母大写,无任何后缀,不能是Makefile.txt或小写的makefile),make工具只会默认识别这个文件名。 - 确认终端工作目录:打开VSCode终端后,先执行
cd(Windows)或pwd(Linux/macOS)查看当前路径,确保和main.cpp、Makefile在同一文件夹下。如果不在,用cd 你的代码文件夹完整路径切换目录后,再执行mingw32-make。
二、SDL头文件找不到的前置验证
即使Makefile能被识别,后续编译仍可能遇到头文件问题,需要确认:
- 头文件路径匹配:Makefile里的
-I src/include表示编译器会在src/include下查找头文件,所以必须保证src/include/SDL2/SDL.h这个路径真实存在——把SDL2安装目录下include文件夹里的SDL2子文件夹完整复制到项目的src/include目录中。 - 库文件路径与版本匹配:
-L src/lib指定了库文件目录,要确认src/lib下有MinGW版本的SDL库:libmingw32.a、libSDL2main.a、libSDL2.a,且库的位数(32/64位)和你的MinGW编译器完全一致。
三、make命令的正确使用
无需将mingw32-make改名为make,只要把MinGW的bin目录(比如C:\MinGW\bin)添加到系统环境变量PATH中,重启VSCode终端后,直接输入mingw32-make即可正常执行编译。
你的代码参考
#include <iostream> #include <string> #include <vector> #include <SDL2/SDL.h> int main() { std::cout << "Hello World!"; return 0; }
你的Makefile参考
all: g++ -I src/include -L src/lib -o main main.cpp -lmingw32 -lSDL2main -lSDL2
内容的提问来源于stack exchange,提问作者thestuff
相关产品推荐
相关产品推荐

