工程目录
.
├── inc
│ └── utils.h
├── makefile
├── obj
└── src
├── main.c
└── utils.c
文件内容
utils.h
#ifndef UTILS_H
#define UTILS_H
int add(int a, int b);
#endif
main.c
#include <stdio.h>
#include "utils.h"
int main() {
printf("Hello, World!\n");
printf("Sum of 3 and 5 is: %d\n", add(3, 5));
return 0;
}
utils.c
#include "utils.h"
int add(int a, int b) {
return a + b;
}
makefile
CC = gcc
CFLAGS = -Wall -I inc
SRC_DIR = src
OBJ_DIR = obj
INC_DIR = inc
SRC_FILES = $(wildcard $(SRC_DIR)/*.c)
OBJ_FILES = $(patsubst $(SRC_DIR)/%.c,$(OBJ_DIR)/%.o,$(SRC_FILES))
EXEC = app
all: $(EXEC)
$(EXEC): $(OBJ_FILES)
$(CC) -o $@ $^
$(OBJ_DIR)/%.o: $(SRC_DIR)/%.c
$(CC) $(CFLAGS) -c $< -o $@
clean:
rm -f $(OBJ_DIR)/*.o $(EXEC)
.PHONY: all clean
make执行后
.
├── app
├── inc
│ └── utils.h
├── makefile
├── obj
│ ├── main.o
│ └── utils.o
└── src
├── main.c
└── utils.c