برنامه نویسی

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
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

خلاصه نمونه ها

  1. بدون کتابخانه استاتیک :

    • به طور مستقیم فایل های منبع را برای ایجاد فایل اجرایی کامپایل می کند mon_programme بدون ایجاد کتابخانه
  2. با کتابخانه استاتیک :

    • یک کتابخانه ایجاد کنید libutils.a از جانب utils.o.
    • قابل اجرا mon_programme به این کتابخانه بستگی دارد.

استفاده

  • برای کامپایل برنامه: make
  • برای تمیز کردن فایل های شی و کتابخانه (در مثال اول): make clean
  • برای تمیز کردن کامل: make fclean
  • برای بازسازی: make re

این مثال‌ها نشان می‌دهند که چگونه می‌توان یک پروژه ساده را با و بدون کتابخانه استاتیک ساختار داد و در عین حال شفافیت و قابلیت نگهداری را در Makefile حفظ کرد.

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا