在makefile中使用时,G ++停止工作

时间:2018-08-08 00:43:15

标签: c++ makefile g++

我目前正在尝试使用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,希望这有助于缩小问题。

1 个答案:

答案 0 :(得分:0)

@GM的评论并非无关紧要-这是对问题的正确答案。包含文件在编译阶段(main.o: main.cpp规则)是必需的,在链接阶段(即main: main.o规则。)

-I includes标志移至第二个规则,然后重试。