ตัวอย่างไฟล์ Makefile อย่างง่ายแบบที่ 1
Copy all: hello
hello: main.o factorial.o hello.o
g ++ main.o factorial.o hello.o - o hello
main.o: main.cpp
g ++ - c main.cpp
factorial.o: factorial.cpp
g ++ - c factorial.cpp
hello.o: hello.cpp
g ++ - c hello.cpp
clean:
rm - rf * o hello
ตัวอย่างไฟล์ Makefile อย่างง่ายแบบที่ 2
ใช้ macro เพื่อสร้างตัวแปร CC และ CFLAGS
Copy # the compiler to use
CC = g ++
# options passed to the compiler
CFLAGS =- c - Wall
all: hello
hello: main.o factorial.o hello.o
$(CC) main.o factorial.o hello.o - o hello
main.o: main.cpp
$(CC) $(CFLAGS) main.cpp
factorial.o: factorial.cpp
$(CC) $(CFLAGS) factorial.cpp
hello.o: hello.cpp
$(CC) $(CFLAGS) hello.cpp
clean:
rm - rf * o hello
ตัวอย่างไฟล์ Makefile อย่างง่ายแบบที่ 3
สร้างตัวแปร SOURCES, OBJECTS และ EXECUTABLE เพื่อรวมไฟล์โปรแกรมเข้าด้วยกัน
Copy CC = g ++
CFLAGS =- c - Wall
LDFLAGS =
SOURCES = main.cpp hello.cpp factorial.cpp
OBJECTS = $(SOURCES:.cpp = .o)
EXECUTABLE = hello
all: $(SOURCES) $(EXECUTABLE)
$(EXECUTABLE): $(OBJECTS)
$(CC) $(LDFLAGS) $(OBJECTS) - o $@
.cpp.o:
$(CC) $(CFLAGS) $ < - o $@
clean:
rm - rf $(OBJECTS) $(EXECUTABLE)
ตัวอย่างไฟล์ Makefile อย่างง่ายแบบที่ 4
ในกรณีที่มีการอ้างอิง (include) ไฟล์ header (.h) เพิ่มหรือไลบรารีภายนอกเพิ่มเติม จะต้องใส่ option -I และ -l เพิ่มเข้าไป
Copy CC = g ++
CFLAGS =- c - Wall
LDFLAGS =
SOURCES = main.cpp hello.cpp factorial.cpp
OBJECTS = $(SOURCES:.cpp = .o)
MY_INCLUDES =/ home / student / project / myLib /
MY_LIBRARIES = zlib fltk
EXECUTABLE = hello
all: $(SOURCES) $(EXECUTABLE)
$(EXECUTABLE): $(OBJECTS)
$(CC) - I$(MY_INCLUDES) $(LDFLAGS) $(OBJECTS) - o $@ - l$(MY_LIBRARIES)
@echo "Compile hello completed..."
.cpp.o:
$(CC) $(CFLAGS) $ < - o $@
@echo "Compile all object files completed..."
clean:
rm - rf $(OBJECTS) $(EXECUTABLE)
@echo "Clean all object files and hello program done..."
ตัวอย่างโปรแกรม
สร้างไฟล์โปรแกรมจำนวน 3 ไฟล์ ได้แก่
Copy // hello.cpp
#include <iostream>
#include "function.h"
using namespace std;
void print_hello ()
{
cout << "Hello World" << endl;
}
Copy // function.h
#ifndef FUNCTIONS_H
#define FUNCTIONS_H
void print_hello ();
#endif
Copy // main.cpp
#include <iostream>
#include "function.h"
using namespace std;
// main() is where program execution begins.
int main () {
print_hello() ;
return 0 ;
}
หลังจากนั้นให้สร้างไฟล์ Makefile
ดังนี้
Copy all: hello
hello: main.o hello.o
g ++ main.o hello.o - o hello
main.o: main.cpp
g ++ - c main.cpp
hello.o: hello.cpp
g ++ - c hello.cpp
clean:
rm - rf * o hello
หลังจากนั้นให้ทำการรันด้วยคำสั่งดังนี้
Copy $ make
g ++ - c main.cpp
g ++ - c hello.cpp
g ++ main.o hello.o - o hello
Copy $ . / hello
Hello World