文件目录结构

cmake示例
cmake_minimum_required(VERSION 2.8)
project(sm4-test)
include_directories(./include)
aux_source_directory(src SRC_DIR)
aux_source_directory(test TEST_DIR)
add_executable(a.out ${SRC_DIR} ${TEST_DIR})
makefile示例
OUT := a.out
INCLUDE_DIR := include
SRC_DIR := src
TEST_DIR := test
SRCS := $(wildcard $(SRC_DIR)/*.c) $(wildcard $(TEST_DIR)/*.c)
OBJ_DIR := obj
OBJS := $(patsubst %.c,$(OBJ_DIR)/%.o,$(SRCS))
CC := gcc
CFLAGS := -I$(INCLUDE_DIR)
$(OUT): $(OBJS)$(CC) $^ -o $@
$(OBJ_DIR)/%.o: %.c@mkdir -p $(dir $@) $(CC) $(CFLAGS) -c $< -o $@
.PHONY: clean rebuild all
all: $(OUT)
clean:$(RM) -r $(OUT) $(OBJ_DIR)
rebuild: clean all