私は現在、1つのプロジェクトごとに変更することなく、複数のプロジェクトで使用できるMakefileを試しています。しかし、私は最近Cでプログラミングを始め、Makefilesを作成しました。C 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'を含むファイルを作成する必要があります。その 'sources.mk'ファイルを' Makefile'に含めます。オブジェクトファイルとbinファイルについては、 'Makefile'でそれらのディレクトリを直接指定することができます – Gaurav
あなたが望むものは明確ではありません。 'src /'で見つかったすべてのソースをコンパイルしてリンクするメイクファイルが必要ですか?または、ソースファイルのプールから複数の異なる実行可能ファイルを作成し、それぞれのソースを適切に選択できるmakefile? – Beta