簡體   English   中英

運行 make 時 Makefile 未檢測到對源文件的更改

[英]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.obin/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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM