cc=g++
ccopts=-g -rdynamic -i. -i/usr/local/include
ldopts=-l/usr/local/lib -l/usr/local/lib64 -l. -lpthread -lboost_thread -lboost_filesystem -lboost_system \
-lboost_program_options
#巨集定義
mongo_defs = -dmongo_test
#ccopts += $(defs)
#生成的執行檔案
target=fuse_test
ifdef mongo_defs
ccopts += $(mongo_defs)
ldopts += -lmongoclient
endif
#src files
srcs = fuse_test.cpp \
files_oper.cpp \
options.cpp \
utils.cpp \
threads_inte***ce.cpp \
mongo_oper.cpp
#標頭檔案查詢路徑
inc = -i. -i/usr/local/include
#目標檔案
objs = $(srcs:.cpp=.o)
#鏈結為可執行檔案
$(target):$(objs)
$(cc) -o $@ $^ $(ldopts)
clean:
rm -rf $(target) $(objs)
#連續動作,請清除再編譯鏈結,最後執行
exec:clean $(target)
@echo start run
./$(target)
@echo stopped
#編譯規則 $@代表目標檔案,$< 代表第乙個依賴檔案
%.o:%.cpp
$(cc) $(ccopts) $(inc) -o $@ -c $<
makefile的乙個模板
include i.include i usr local include libxml2 i usr local ssl include i usr local include target agent lib lstdc lrt lpthread lxml2 objs patsubst cpp,...
乙個比較標準的makefile檔案
inc path i.lib path l.lib lib lxlog lpthread liconv lmd5 cc g cppflags wall inc path g objs src spider.o src s hash.o src html store.o src utils.o src...
編寫乙個通用的Makefile檔案
1.1在這之前,我們需要了解程式的編譯過程 a.預處理 檢查語法錯誤,展開巨集,包含標頭檔案等 b.編譯 c s c.彙編 s o 1.2體驗在vc下程式的編譯 a.先編譯,在鏈結 b.修改了哪個檔案,就單獨編譯此檔案,在鏈結 c.修改了哪個標頭檔案,就單獨編譯使用該標頭檔案的原始檔,在鏈結 1.3...