[英]Makefile not detecting changes to source file when running make
我有一個 Makefile,它無法識別何時對底層源代碼進行了更改。 當我嘗試構建時,控制台收到以下消息:“make:'all' 什么都不做。” 我的感覺是,這可能與我對如何處理不同目錄中的文件的理解有缺陷有關。 我在 StackOverflow 上看到過類似的問題,但似乎沒有一個能完全解決這個問題,或者這個問題似乎是由其他問題引起的。
src :源代碼文件存放在這里。
include :頭文件住在這里。
build :目標文件住在這里。
bin :可執行文件住在這里。
test :測試代碼在這里。
Makefile :生成文件。
我已經創建了一個名為 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." );
}
這些行:
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.o
或bin/main
。 您必須提供一個 make 可用於實際構建的配方; 可能是:
bin/main: build/main.o
$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^ $(LDLIBS)
build/main.o: src/main.c
$(CC) $(CFLAGS) -c -o $@ $<
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.