makefile中使用函式

2021-09-22 07:50:19 字數 2266 閱讀 5457

一 編譯需要的檔案

1 file1.h

#ifndef file1_h_

#define file1_h_

#ifdef __cplusplus

extern "c"

#endif

#endif

2 file1.cpp

#include #include "file1.h"

using namespace std;

void file1print(){

cout<<"print file1**********************"<3 file2.cpp

#include #include "file1.h"

using namespace std;

int main(){

cout<<"print file2**********************"<二 makefile中使用函式

cc = gcc

xx = g++

cflags = -wall -o -g

target = helloworld

%.o: %.c

$(cc) $(cflags) -c $< -o $@

%.o:%.cpp

$(xx) $(cflags) -c $< -o $@

sources = $(wildcard *.c *.cpp)

objs = $(patsubst %.c,%.o,$(patsubst %.cpp,%.o,$(sources)))

$(target) : $(objs)

$(xx) $(objs) -o $(target)

clean:

rm -rf *.o helloworld

三 編譯

[root@localhost 0405]# make

g++ -wall -o -g -c file1.cpp -o file1.o

g++ -wall -o -g -c file2.cpp -o file2.o

g++ file1.o file2.o -o helloworld

[root@localhost 0405]# ll

total 100

-rw-r--r--. 1 root root 140 may 1 08:52 file1.cpp

-rw-r--r--. 1 root root 170 may 1 08:52 file1.h

-rw-r--r--. 1 root root 26488 may 11 09:43 file1.o

-rw-r--r--. 1 root root 167 may 1 08:52 file2.cpp

-rw-r--r--. 1 root root 24136 may 11 09:43 file2.o

-rwxr-xr-x. 1 root root 31520 may 11 09:43 helloworld

-rw-r--r--. 1 root root 328 may 1 08:52 makefile

四 說明

1 $(wildcard pattern...):在makefile中,它被展開為已經存在的、使用空格分開的、匹配此模式的所有檔案列表。sources = $(wildcard *.c *.cpp)表示產生乙個所有以.c、.cpp結尾的檔案列表,然後存入變數sources裡。

2 patsubst函式,用於匹配替換,有3個引數。第乙個是乙個需要匹配的樣式,第二個表示用什麼來替換它,第三個是乙個需要被處理的由空格分割的列表。比如:$(patsubst %.c %o,$(dir)),是指把$(dir)中符合字尾是 .c的全部替換為.o。objs = $(patsubst %.c,%.o,$(patsubst %.cpp,%.o,$(sources)))的意思是把檔案列表中所有.c、.cpp字元變成.o,形成乙個新的檔案列表,然後存入objs變數中。

3 下面幾句表示把所有的.c和.cpp檔案編譯成.o檔案

%.o: %.c

$(cc) $(cflags) -c $< -o $@

%.o:%.cpp

$(xx) $(cflags) -c $< -o $@

$@:擴充套件成當前規則的目的檔名。

$<:擴充套件成依靠列表中的第1個依靠檔案。

$^:擴充套件成整個依靠的列表。

makefile中使用變數

makefile裡的變數就像乙個變數,變數的作用主要如下 1 儲存檔名列表。2 儲存編譯器的引數。makefile中的變數是用乙個字串在makefile中定義的,這個文字串就是變數的值。只要在一行的開始寫下這個變數的名字,後面跟乙個 然後跟要設定的這個變數的 值即可定義變數,下面是定義變數的語法 變...

makefile中使用變數

makefile裡的變數就像乙個變數,變數的作用主要如下 1 儲存檔名列表。2 儲存編譯器的引數。makefile中的變數是用乙個字串在makefile中定義的,這個文字串就是變數的值。只要在一行的開始寫下這個變數的名字,後面跟乙個 然後跟要設定的這個變數的 值即可定義變數,下面是定義變數的語法 變...

四 makefile中使用變數

在上面的例子中,先讓我們看看edit的規則 edit main.o kbd.o command.o display.o insert.o search.o files.o utils.o cc o edit main.o kbd.o command.o display.o insert.o sear...