我目前正在嘗試制定一個可用於多個項目的Makefile,而無需爲每個單個項目進行更改。不過,我最近開始用C語言編程,並使MakefilesC Makefile - 用於不同文件結尾的子目錄
這是我目前的項目結構。
project
| src
| gd.c, gd.h, geom.c(only file with main function)
| obj // *.o files should be created here
| bin // executable should be created here
| Makefile
這是我到目前爲止構建的內容,但不知道如何指定編譯/鏈接文件的子目錄。
1 TARGET = projectname
2 LIBS = -lm
3 CC = gcc
4 CFLAGS = -std=c11 -Wall
5 LD = gcc
6 LDFLAGS = -Wall
7
8 SRCDIR = src
9 OBJDIR = obj
10 EXEDIR = bin
11
12 SOURCES =
13 HEADERS =
14 OBJECTS =
15
16 $(EXEDIR)/$(TARGET): $(OBJECTS)
17 $(LD) $(OBJECTS) $(LDFLAGS) -o [email protected] $(LIBS)
18
19 $(OBJECTS): $(SOURCES) $(HEADERS)
20 $(CC) $(CFLAGS) -c $< -o [email protected]
21
22 .PHONY: clean
23 clean:
24 rm -f *.o
25
26 .PHONY: remove
27 remove: clean
28 rm -f $(EXEDIR)/$(TARGET)
我的問題是:
- 我怎樣才能創建這些文件並把它們在各自的子目錄中有我的佈局或類似於它的東西?
- 使用make命令時是否可以創建必要的文件夾(obj和bin)?如果可以,我該怎麼做?
您需要創建一個文件'sources.mk'包含所有'* .c'與相應的路徑。在'Makefile'中包含'sources.mk'文件。對於對象和bin文件,你可以直接在'Makefile'中爲它們指定目錄。 – Gaurav
目前還不清楚你想要什麼。你需要一個makefile來編譯和鏈接它在src /'中找到的所有源代碼嗎?或者可以從一個源文件池中構建幾個不同可執行文件的makefile,爲每個文件選擇正確的源文件? – Beta