我目前正在尝试使用Makefile来自动化我的构建过程,而我仍然是新手。当我运行g ++命令时:
g++ -I includes -L lib -lSDL2_test -lSDL2 -lSDL2main main.o -o main.exe
来自以下makefile:
main: main.o
g++ -I includes -L lib -lSDL2_test -lSDL2 -lSDL2main main.o -o main.exe
main.o: main.cpp
g++ -c main.cpp
我得到clang: error: linker command failed with exit code 1
但是,当从与makefile相同的目录中运行相同的g ++命令时,所有内容都可以正确编译,而我没有收到错误。那我该如何解决呢?
编辑:
我已经进行了一些测试,发现makefile的问题在于-I includes
g ++标志无法使main.o文件找到SDL.H
,希望这有助于缩小问题。
答案 0 :(得分:0)
@GM的评论并非无关紧要-这是对问题的正确答案。包含文件在编译阶段(main.o: main.cpp
规则)是必需的,否在链接阶段(即main: main.o
规则。)
将-I includes
标志移至第二个规则,然后重试。