歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux技術 >> Linux工程下所有C代碼編譯Makefile模板

Linux工程下所有C代碼編譯Makefile模板

日期:2017/3/3 12:57:12   编辑:Linux技術
如何快速的開發簡易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)詳解
Copyright © Linux教程網 All Rights Reserved