Makefile入門二 理解 和

2021-09-27 12:36:39 字數 1516 閱讀 2259

前面簡單記錄了一下makefile中helloworld的用法,這次來理解一些$@、$^、$《的含義

makefile中,格式為這樣的

target : prerequisties

目標:需要依賴的條件

簡單的工程直接這樣

hello:hello.cc

gcc hello.cc -o hello

但如果檔案多了呢?按部就班寫會顯得很長,所有這時候makefile中的常用命令就產生了,如下:

$@ 表示目標檔案

$^ 表示所有的依賴檔案

$< 表示第乙個依賴檔案

$? 表示比目標還要新的依賴檔案列表

工作作用,將標頭檔案放在include資料夾,cpp檔案放在source資料夾,test.cc為可執行檔案

工程目錄:

.├── include

│ ├── mystring.h

│ └── utils.h

├── makefile

├── source

│ ├── mystring.cpp

│ └── utils.cpp

└── test.cc

makefile檔案為

target = test.out

cxxflags += -std=gnu++11

cc = g++

#主函式檔案

cxx_files := ./test.cc

#cpp檔案

src_dirs := ./source/mystring.cpp

src_dirs += ./source/utils.cpp

inc_dirs := -i ./include

libs += -lstdc++

libs += -ldl -lpthread

$(target):$(cxx_files) $(src_dirs)

$(info target: $@)

$(info all: $^)

$(info first: $

$(info src_dirs_all: $(src_dirs))

$(cc) -o $@ $^ $(inc_dirs) $(cxxflags) $(libs)

.phony:clean

clean:

rm -rf $(target)

輸出結果如下

列印用info,makefile提供了三個命令

$(warning "the value of local_path is$(file)")

$(info "the value of local_path is$(file)")

$(eror "the value of local_path is$(file)

")

Makefile檔案理解

makefile檔案 首先要把原始檔 c或者.cpp 編譯成中間 檔案,在windows下也就是.obj檔案,unix下是.o檔案,即 object file,這個動作叫做編譯 compile 然後再把大量的object file合成執行檔案,這個動作叫作鏈結 link 編譯時,編譯器需要的是語法的...

Makefile 入門知識

這篇文章介紹在linux下進行c語言程式設計所需要的基礎知識。在這篇文章當中,我們將會學到以下內容 源程式編譯 makefile的編寫 程式庫的鏈結 程式的除錯 標頭檔案和系統求助 1.源程式的編譯 在linux下面,如果要編譯乙個c語言源程式,我們要使用gnu的gcc編譯器。下面我們以乙個例項來說...

Makefile簡單入門

作為linux或unix下的程式開發人員,大家一定都遇到過makefile,用make命令來編譯自己寫的程式確實是很方便。一般開發情況下,大家都是手工寫乙個簡單makefile。下面先給乙個最簡單的示例 makefile示例 object main.o function.o change objec...