Makefile – .h – .c نمونه.

Summarize this content to 400 words in Persian Lang
در اینجا ساختار پروژه با مثال بدون کتابخانه ایستا، و به دنبال آن مثال با کتابخانه استاتیک است.
ساختار پروژه
/mon_projet
├── Makefile
├── utils.h
├── utils.c
└── main.c
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
مثال 1: بدون کتابخانه استاتیک
1. فایل هدر: utils.h
#ifndef UTILS_H
#define UTILS_H
// Fonction pour additionner deux entiers
int addition(int a, int b);
#endif // UTILS_H
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
2. فایل منبع: utils.c
#include “utils.h”
// Implémentation de la fonction d’addition
int addition(int a, int b) {
return a + b;
}
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
3. فایل اصلی: main.c
#include
#include “utils.h”
int main() {
int a = 5;
int b = 3;
int result = addition(a, b);
printf(“La somme de %d et %d est : %d\n”, a, b, result);
return 0;
}
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
4. Makefile: Makefile
# Variables
CC = gcc
CFLAGS = -Wall -g
SOURCES = main.c utils.c
OBJECTS = $(SOURCES:.c=.o)
DEPENDS = $(OBJECTS:.o=.d)
TARGET = mon_programme
# Règle par défaut
all: $(TARGET)
# Lien de l’exécutable
$(TARGET): $(OBJECTS)
$(CC) -o $@ $^
# Compilation des fichiers .c en .o avec génération des dépendances
%.o: %.c
$(CC) $(CFLAGS) -MMD -c $ -o $@
# Inclure les fichiers de dépendance
-include $(DEPENDS)
# Déclaration des cibles phony
.PHONY: all clean fclean re
# Nettoyage
clean:
rm -f $(OBJECTS) $(DEPENDS)
fclean: clean
rm -f $(TARGET)
re: fclean all
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
مثال 2: با کتابخانه ایستا
1. فایل هدر: utils.h
#ifndef UTILS_H
#define UTILS_H
// Fonction pour additionner deux entiers
int addition(int a, int b);
#endif // UTILS_H
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
2. فایل منبع: utils.c
#include “utils.h”
// Implémentation de la fonction d’addition
int addition(int a, int b) {
return a + b;
}
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
3. فایل اصلی: main.c
#include
#include “utils.h”
int main() {
int a = 5;
int b = 3;
int result = addition(a, b);
printf(“La somme de %d et %d est : %d\n”, a, b, result);
return 0;
}
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
4. Makefile: Makefile
# Variables
CC = gcc
AR = ar
CFLAGS = -Wall -g
SOURCES = main.c utils.c
OBJECTS = $(SOURCES:.c=.o)
DEPENDS = $(OBJECTS:.o=.d)
TARGET = mon_programme
LIBRARY = libutils.a
# Règle par défaut
all: $(TARGET)
# Lien de l’exécutable
$(TARGET): $(OBJECTS) $(LIBRARY)
$(CC) -o $@ $^
# Création de la bibliothèque statique
$(LIBRARY): utils.o
$(AR) rcs $@ $^
# Compilation des fichiers .c en .o avec génération des dépendances
%.o: %.c
$(CC) $(CFLAGS) -MMD -c $ -o $@
# Inclure les fichiers de dépendance
-include $(DEPENDS)
# Déclaration des cibles phony
.PHONY: all clean fclean re
# Nettoyage
clean:
rm -f $(OBJECTS) $(DEPENDS) $(LIBRARY)
fclean: clean
rm -f $(TARGET)
re: fclean all
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
خلاصه نمونه ها
بدون کتابخانه استاتیک :
به طور مستقیم فایل های منبع را برای ایجاد فایل اجرایی کامپایل می کند mon_programme بدون ایجاد کتابخانه
با کتابخانه استاتیک :
یک کتابخانه ایجاد کنید libutils.a از جانب utils.o.
قابل اجرا mon_programme به این کتابخانه بستگی دارد.
استفاده
برای کامپایل برنامه: make
برای تمیز کردن فایل های شی و کتابخانه (در مثال اول): make clean
برای تمیز کردن کامل: make fclean
برای بازسازی: make re
این مثالها نشان میدهند که چگونه میتوان یک پروژه ساده را با و بدون کتابخانه استاتیک ساختار داد و در عین حال شفافیت و قابلیت نگهداری را در Makefile حفظ کرد.
در اینجا ساختار پروژه با مثال بدون کتابخانه ایستا، و به دنبال آن مثال با کتابخانه استاتیک است.
ساختار پروژه
/mon_projet
├── Makefile
├── utils.h
├── utils.c
└── main.c
مثال 1: بدون کتابخانه استاتیک
1. فایل هدر: utils.h
#ifndef UTILS_H
#define UTILS_H
// Fonction pour additionner deux entiers
int addition(int a, int b);
#endif // UTILS_H
2. فایل منبع: utils.c
#include "utils.h"
// Implémentation de la fonction d'addition
int addition(int a, int b) {
return a + b;
}
3. فایل اصلی: main.c
#include
#include "utils.h"
int main() {
int a = 5;
int b = 3;
int result = addition(a, b);
printf("La somme de %d et %d est : %d\n", a, b, result);
return 0;
}
4. Makefile: Makefile
# Variables
CC = gcc
CFLAGS = -Wall -g
SOURCES = main.c utils.c
OBJECTS = $(SOURCES:.c=.o)
DEPENDS = $(OBJECTS:.o=.d)
TARGET = mon_programme
# Règle par défaut
all: $(TARGET)
# Lien de l'exécutable
$(TARGET): $(OBJECTS)
$(CC) -o $@ $^
# Compilation des fichiers .c en .o avec génération des dépendances
%.o: %.c
$(CC) $(CFLAGS) -MMD -c $ -o $@
# Inclure les fichiers de dépendance
-include $(DEPENDS)
# Déclaration des cibles phony
.PHONY: all clean fclean re
# Nettoyage
clean:
rm -f $(OBJECTS) $(DEPENDS)
fclean: clean
rm -f $(TARGET)
re: fclean all
مثال 2: با کتابخانه ایستا
1. فایل هدر: utils.h
#ifndef UTILS_H
#define UTILS_H
// Fonction pour additionner deux entiers
int addition(int a, int b);
#endif // UTILS_H
2. فایل منبع: utils.c
#include "utils.h"
// Implémentation de la fonction d'addition
int addition(int a, int b) {
return a + b;
}
3. فایل اصلی: main.c
#include
#include "utils.h"
int main() {
int a = 5;
int b = 3;
int result = addition(a, b);
printf("La somme de %d et %d est : %d\n", a, b, result);
return 0;
}
4. Makefile: Makefile
# Variables
CC = gcc
AR = ar
CFLAGS = -Wall -g
SOURCES = main.c utils.c
OBJECTS = $(SOURCES:.c=.o)
DEPENDS = $(OBJECTS:.o=.d)
TARGET = mon_programme
LIBRARY = libutils.a
# Règle par défaut
all: $(TARGET)
# Lien de l'exécutable
$(TARGET): $(OBJECTS) $(LIBRARY)
$(CC) -o $@ $^
# Création de la bibliothèque statique
$(LIBRARY): utils.o
$(AR) rcs $@ $^
# Compilation des fichiers .c en .o avec génération des dépendances
%.o: %.c
$(CC) $(CFLAGS) -MMD -c $ -o $@
# Inclure les fichiers de dépendance
-include $(DEPENDS)
# Déclaration des cibles phony
.PHONY: all clean fclean re
# Nettoyage
clean:
rm -f $(OBJECTS) $(DEPENDS) $(LIBRARY)
fclean: clean
rm -f $(TARGET)
re: fclean all
خلاصه نمونه ها
-
بدون کتابخانه استاتیک :
- به طور مستقیم فایل های منبع را برای ایجاد فایل اجرایی کامپایل می کند
mon_programme
بدون ایجاد کتابخانه
- به طور مستقیم فایل های منبع را برای ایجاد فایل اجرایی کامپایل می کند
-
با کتابخانه استاتیک :
- یک کتابخانه ایجاد کنید
libutils.a
از جانبutils.o
. - قابل اجرا
mon_programme
به این کتابخانه بستگی دارد.
- یک کتابخانه ایجاد کنید
استفاده
- برای کامپایل برنامه:
make
- برای تمیز کردن فایل های شی و کتابخانه (در مثال اول):
make clean
- برای تمیز کردن کامل:
make fclean
- برای بازسازی:
make re
این مثالها نشان میدهند که چگونه میتوان یک پروژه ساده را با و بدون کتابخانه استاتیک ساختار داد و در عین حال شفافیت و قابلیت نگهداری را در Makefile حفظ کرد.