阿里云9元做網(wǎng)站營銷方法有哪些
一,簡介
我們在使用gcc編譯程序時,常常需要自己實現(xiàn)Makefile,那么如何快速的實現(xiàn)Makefile呢?這里把一些基本的操作整理成模板,供參考。
二,模板介紹
功能包含基本功能編譯exe(包括調(diào)用其他算法庫)的功能。
話不多說,直接上模板:
# <1> base command
CC := gcc
AR := ar
RM := rm -rf
MKDIR := mkdir -p# <2> inclue path and .c files path
PROJECT_PATH := .
IGNORE_INC_DIR := ./.git ./Makefile_template
INCLUDE_PATH := $(shell find $(PROJECT_PATH) -type d $(foreach dir, $(IGNORE_INC_DIR), -not -path '*$(dir)*'))IGNORE_SRC_FILE_DIR :=
SRC_FILE_PATH := $(shell find $(PROJECT_PATH) -type d $(foreach dir, $(IGNORE_SRC_FILE_DIR), -not -path '*$(dir)*'))ALGO_LIB_DIR := # <3> build flags
C_INC_FLAGS := $(addprefix -I, $(INCLUDE_PATH))
COMMON_FLAGS := -O2 -g0 -W
CFLAGS := $(C_INC_FLAGS) $(COMMON_FLAGS)LIB_FLAG := # <4> src files and objs
SRC_FILES := $(foreach dir,$(SRC_FILE_PATH),$(wildcard $(dir)/*.c))
#SRC_FILES := $(shell find $(SRC_FILE_PATH) -name *.c)
SRC_OBJS := $(patsubst %.c, %.o, $(SRC_FILES))# <5> target define
OUTPUT_DIR := out
TARGET := out/output.exe# <6> build command
Executable: $(OUTPUT_DIR) $(TARGET)$(OUTPUT_DIR):$(MKDIR) $@$(TARGET):$(CC) $(SRC_FILES) $(CFLAGS) $(LIB_FLAG) -o $@$(SRC_OBJS):%.o:%.c$(CC) $(CFLAGS) -o $@ $<clean:$(RM) $(SRC_OBJS) $(TARGET)# <7> debug info
print:$(info $(INCLUDE_PATH))$(info $(SRC_FILE_PATH))$(info $(SRC_FILES)).PHONY: all clean
三,總結
本文主要介紹了一般Makefile的模板,供參考。