在VSCode中开发OpenGL应用时执行mingw32-make遇编译错误
解决mingw32-make编译OpenGL项目时的"../src/*.cpp: Invalid argument"错误
错误现象
执行mingw32-make时出现以下编译错误:
g++ -g --std=c++17 -I../include -L../lib ../src/*.cpp ../src/glad.c -lglfw3dll -o main cc1plus.exe: fatal error: ../src/*.cpp: Invalid argument compilation terminated. mingw32-make: *** [Makefile:2: all] Error 1
问题原因
Windows环境下的MinGW g不会自动展开*.cpp这类通配符——Windows Shell不像Linux Shell那样会预先解析通配符,导致g把../src/*.cpp当成一个实际文件名去查找,最终因找不到对应文件报错。
解决方案
方案1:让Makefile自动展开通配符
修改Makefile,使用Make的wildcard函数获取所有匹配的cpp文件,替换原命令中的通配符部分:
SRC_FILES = $(wildcard ../src/*.cpp) ../src/glad.c all: g++ -g --std=c++17 -I../include -L../lib $(SRC_FILES) -lglfw3dll -o main
方案2:手动列出所有源文件
如果通配符使用仍有问题,直接逐个列出../src目录下的所有cpp文件:
all: g++ -g --std=c++17 -I../include -L../lib ../src/main.cpp ../src/xxx.cpp ../src/glad.c -lglfw3dll -o main
(注:将../src/xxx.cpp替换为实际存在的cpp文件名)
方案3:验证路径正确性
确认../src目录真实存在,且目录下确实有cpp文件,避免因路径拼写错误导致文件查找失败。
内容的提问来源于stack exchange,提问作者RanaPrathap
相关产品推荐
相关产品推荐

