如何快速的開發簡易C程序,首先需要一個Makefile模板。
簡易Makefile特性
這個模板需要具備以下特性:
==》快速編譯所有C代碼
==》能夠快速打包源代碼
==》語言簡潔易懂,便於後續的模塊化操作
這裡提供一個這樣的模板供大家參考使用,如有改進方法和建議,也請不吝賜教,以便完善,謝謝!
簡易Makefile模板
廢話不說,使用《Linux下C/C++版本發布自動腳本》集成DEMO的三個文件進行簡單的示例(version.c/main.c/version.h)。
Makefile模板文件,編譯輸出hello可執行程序。
#Makefile for program hello
#
program := hello
sources := $(wildcard *.c)
headers := $(wildcard *.h)
objects := $(sources:.c=.o)
deps := $(sources:.c=.d)
CC := gcc
SHARED := -shared
FPIC := -fPIC
CFLAGS :=
LDFLAGS :=
RM := rm -f
TAR := tar
GZIP := gzip
me := Makefile
all: $(program)
hello: $(objects)
$(CC) -o $@ $(CFLAGS) $(objects) $(LDFLAGS) $(LDLIBS)
dist:
pkg=`pwd`; tar cvf - $(me) $(sources) $(headers) \
| $(GZIP) -c > `basename $${pkg}`.tar.gz
clean:
$(RM) $(objects)
$(RM) $(deps)
$(RM) $(program)
.SUFFIXES: .d
.c.d:
$(CC) $(CPPFLAGS) -MM -MF $@ $<
-include $(deps)
簡易Makefile模板下載
打包資料下載
工程測試結果
測試結果如下所示:
# ls
main.c Makefile version.c version.h
# make
gcc -MM -MF version.d version.c
gcc -MM -MF main.d main.c
gcc -c -o main.o main.c
gcc -c -o version.o version.c
gcc -o hello main.o version.o
# ls
hello main.c main.d main.o Makefile version.c version.d version.h version.o
# ./hello
get_version: DEBUG_2016-05-10_18:41:24_v1_2_271
get_ver_author: lida
get_ver_author_contact: [email protected]
get_ver_flag: DEBUG
get_build_date: 2016-05-10
get_build_time: 18:41:24
get_ver_major: 1
get_ver_minor: 2
get_ver_rev: 271
# make dist
pkg=`pwd`; tar cvf - Makefile main.c version.c version.h \
| gzip -c > `basename ${pkg}`.tar.gz
Makefile
main.c
version.c
version.h
# make clean
$ ls
main.c Makefile version.c version.h version.tar.gz
參考資料
【1】簡單開發過程介紹(C語言)
【2】Linux應用程序之Helloworld入門
【3】Linux下C/C++版本發布自動腳本
【4】Linux下常用打包、解壓方法(tar、bz2、rar)詳解