以下是本人寫的makefile模板例項,帶有比較詳細的注釋:
# 指令編譯器和選項
cc=g++
#-g 新增gdb除錯資訊;-wall 提示warning資訊;-o3 表示第3級優化;
cflags=-g -wall -o3
# 可執行檔案
target=main
# c檔案
srcs = \
main.c
srcpps = test.cpp
#./test-add/test-add.c \
#./test-sub/test-sub.c
#標頭檔案
#inc = -i./test-add -i./test-sub
# 目標檔案
objs = $(srcs:.c=.o) $(srcpps:.cpp=.o)
#objs = $(srcs:.c=.o)
# 庫檔案
#共享庫
#dlibs = -lm
# 鏈結為可執行檔案
$(target):$(objs)
#所有的目標
# @echo target:$@
#去除重複的所有的依賴
# @echo objects:$^
#目標的第乙個依賴
# @echo last:$<
#如果增加目標庫注釋下面一句,開啟這一句# $(cc) -o $@ $^ $(dlibs)
$(cc) -o $@ $^
clean:
rm -rf $(target) $(objs)
# 連續動作,請清除再編譯鏈結,最後執行
exec:clean $(target)
@echo 開始執行
./$(target)
@echo 執行結束
# 編譯規則 $@代表目標檔案 $< 代表第乙個依賴檔案
%.o:%.c
#沒有加頭檔案目錄時
$(cc) $(cflags) -o $@ -c $<
%.o:%.cpp
$(cc) $(cflags) -o $@ -c $<
#加入頭檔案目錄時
# $(cc) $(cflags) $(inc) -o $@ -c $<
以下是源**:
main.c:
#include"test.h"
int main()
test.cpp:
#include
void pri()
test.h:
#ifndef test_h
#define test_h
void pri();
#endif
C C 混合程式設計
c中呼叫c c 中呼叫c都會用到extern c 但兩者的意義卻大不一樣!例 c void foo int x c c code extern c void foo int x 讓c 聯結器能通過過類似於 foo來查詢此函式,而非類似於 foo int這樣的符號。使用extern c 則是告訴編譯器...
C C 混合程式設計
分類 linux c c 2012 12 26 09 51 655人閱讀收藏 舉報cc 混合程式設計 externc cplusplus 現在,我們就來慢慢的了解吧。一 extern c 的作用 最重點 1.extern c 的真實目的是實現類c和c 的混合程式設計。extern c 是由 提供的乙...
C C 混合程式設計
現在,我們就來慢慢的了解吧。一 extern c 的作用 最重點 1.extern c 的真實目的是實現類c和c 的混合程式設計。extern c 是由 提供的乙個連線交換指定符號,用於告訴 這段 是 函式。extern c 後面的函式不使用的c 的名字修飾,而是用c。這是因為c 編譯後庫中函式名會...