簡體   English   中英

c程序的簡單Makefile

[英]simple Makefile for c program

我有這個(工作)Makefile用於單文件C-Application。

all: simpleua

simpleua: simpleua.c
    $(CC) -o $@ $< `pkg-config --cflags --libs libpjproject`

現在我想為多文件C-Application擴展這個Makefile。 文件是main.c simpleua.c simpleua.h

我在互聯網上找到了一些樣本,但沒有什么簡單的,並且使用pkg-config

非常感謝弗洛里安

這可能需要幾次迭代(而且你遺漏了很多細節)。 嘗試這個:

all: simpleua

simpleua: simpleua.o main.o
    $(CC) -o $@ $^ `pkg-config --cflags --libs libpjproject`

simpleua.o main.o: %.o: %.c simpleua.h
    $(CC) -c -o $@ $< `pkg-config --cflags --libs libproject`

編輯:第二次嘗試(感謝Jonathan Leffler)。 在模式規則中使用--libs可能是不必要的,但請嘗試並查看。

這是一個簡單的Makefile示例

CC = gcc
XX = g++
CFLAGS = -g

INC := -I test.h

$(LIBS)

TGT = ./sample
OUTPUT = ../output/

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


SOURCES = $(wildcard *.c *.cpp)
OBJS = $(patsubst %.c,%.o,$(patsubst %.cpp,%.o,$(SOURCES)))

$(TGT) : $(OBJS)
    $(CC) $(OBJS) -o $(TGT)    
    chmod 777 $(TGT)
    cp $(TGT) $(OUTPUT)

clean:
    rm -rf *.o *~ $(OUTPUT)/* 

它適用於C和C ++,只需要從CC更改為XX。 例如,我有兩個目錄,如Makefile

1)sample 

2)output

在示例目錄中,我的所有源代碼都存放在輸出文件夾中,我的最終二進制文件被復制(您可以根據需要為目錄指定任何名稱,但請確保在Makefile也提供相同的名稱)。所以您可以在示例目錄中放置盡可能多的源文件能夠編譯它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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