ตัวอย่างไฟล์ 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