C语言 运行make时,Makefile未检测到源文件的更改

y53ybaqx  于 2022-12-22  发布在  其他
关注(0)|答案(1)|浏览(181)

问题描述

我有一个Makefile,它无法识别对底层源代码所做的更改。当我尝试构建时,控制台收到以下消息:“make:Nothing to be done for 'all'.”我的感觉是,这可能与我对如何处理不同目录中的文件的理解有缺陷有关。我在StackOverflow上看到过类似的问题,但似乎没有一个能完全解决这个问题,或者这个问题似乎是由其他问题引起的。

项目结构

src:源代码文件位于此处。
包括:头文件在这里。
build:目标文件位于此处。
bin:可执行文件位于此处。
test:测试代码位于此处。
生成文件:make文件。

生成文件

我已经创建了一个名为main. c的基本源文件,并将其放在src中,然后实现了一个简单的make文件,如下所示:

CC = gcc
CFLAGS = -DTESTABLE -Wall -std=c99 -g

all: bin/main

bin/main: build/main.o
build/main.o: src/main.c

clean:
    rm -f build/main.o
    rm -f bin/main

源文件

#include <stdio.h>

int main( int argc, char *argv[] )
{
    printf( "Hi there. For real." );
}
c9x0cxw0

c9x0cxw01#

这些行:

bin/main: build/main.o
build/main.o: src/main.c

告诉make构建bin/main需要build/main.o,构建build/main.o需要src/main.c,但是实际上并没有告诉make * 如何 * 构建build/main.obin/main。也许:

bin/main: build/main.o
        $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^ $(LDLIBS)
build/main.o: src/main.c
        $(CC) $(CFLAGS) -c -o $@ $<

相关问题