一 編譯需要的檔案
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...