C语言 Makefile提供不存在/不应该存在的编译器文件

jpfvwuh4  于 2023-01-12  发布在  其他
关注(0)|答案(1)|浏览(116)

我有一个基本的C OpenGL编程的Makefile设置,但运行时有2个文件传递给clang,不应该存在,我不知道为什么。问题发生后,我添加了高兴和glfw的项目。
代码:

CC = clang
    `CCFLAGS = -lGL -lglfw -std=c++20 -v -Wall -Wextra -Wepedantic -g -lgdi32
    LDFLAGS = lib/glad/src/glad.o lib/glfw/src/libglfw3.a -lgdi32 -lm 
    SRC = $(wildcard src/*.c)
    OBJ  = $(SRC:.c=.o)
    BIN = bin

all: libs build

libs:
    cd lib/glad && $(CC) -o src/glad.o -Iinclude -c src/glad.c
    cd lib/glfw && cmake . -G 'Unix Makefiles' && make

build: $(OBJ)
    $(CC) -o $(BIN)/build $^ $(LDFLAGS)

%.o %.c:
    $(CC) -o $@ -c $< $(CCFLAGS)

run:
    ./bin/build.exe

错误:叮当声:错误:没有这样的文件或目录:"所有. o"克朗:错误:没有这样的文件或目录:"libs"叮当作响:错误:没有这样的文件或目录:"构建"

jm81lzqq

jm81lzqq1#

提问时,请包括您键入的命令、命令make printed,以及至少前几行和最后几行错误消息(格式正确,为代码块)。
我假设额外的引号字符是剪切和粘贴中的错误;请花点时间在你发布问题之后回顾一下(或者更好的是,在发布之前使用预览)。你只写了一次,但是成千上万的人会花时间阅读它。请足够体贴,让他们容易阅读。
你的问题是:

%.o %.c:
        $(CC) -o $@ -c $< $(CCFLAGS)

您想说“使用此规则从.c文件构建.o文件”,但%.o %.c:说的是“使用此规则从无到有地构建.o.c文件”。
您需要:

%.o: %.c
        $(CC) -o $@ -c $< $(CCFLAGS)

相关问题