আমার নিচের মেকফাইল রয়েছে যা আমি একটি প্রোগ্রাম তৈরি করতে ব্যবহার করি (একটি কার্নেল, আসলে) যা আমি কাজ করছি। এটি স্ক্র্যাচ থেকে এবং আমি প্রক্রিয়াটি সম্পর্কে শিখছি, সুতরাং এটি নিখুঁত নয়, তবে আমার অভিজ্ঞতার মেকফিলগুলি লেখার স্তরের জন্য এই পর্যায়ে যথেষ্ট শক্তিশালী বলে মনে করি।
AS = nasm
CC = gcc
LD = ld
TARGET = core
BUILD = build
SOURCES = source
INCLUDE = include
ASM = assembly
VPATH = $(SOURCES)
CFLAGS = -Wall -O -fstrength-reduce -fomit-frame-pointer -finline-functions \
-nostdinc -fno-builtin -I $(INCLUDE)
ASFLAGS = -f elf
#CFILES = core.c consoleio.c system.c
CFILES = $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.c)))
SFILES = assembly/start.asm
SOBJS = $(SFILES:.asm=.o)
COBJS = $(CFILES:.c=.o)
OBJS = $(SOBJS) $(COBJS)
build : $(TARGET).img
$(TARGET).img : $(TARGET).elf
c:/python26/python.exe concat.py stage1 stage2 pad.bin core.elf floppy.img
$(TARGET).elf : $(OBJS)
$(LD) -T link.ld -o $@ $^
$(SOBJS) : $(SFILES)
$(AS) $(ASFLAGS) $< -o $@
%.o: %.c
@echo Compiling $<...
$(CC) $(CFLAGS) -c -o $@ $<
#Clean Script - Should clear out all .o files everywhere and all that.
clean:
-del *.img
-del *.o
-del assembly\*.o
-del core.elf
এই মেকফিলের সাথে আমার প্রধান সমস্যাটি হ'ল আমি যখন এক বা একাধিক সি ফাইলের অন্তর্ভুক্ত একটি শিরোনাম ফাইল সংশোধন করি তখন সি ফাইলগুলি পুনর্নির্মাণ হয় না। আমি আমার হেডার ফাইলগুলির সমস্ত আমার সি ফাইলগুলির জন্য নির্ভরশীলতা হয়ে খুব সহজেই এটি ঠিক করতে পারি, তবে যে কোনও সময় আমি কোনও শিরোনাম ফাইল পরিবর্তন / সংযোজন করে যা প্রকল্পটির সম্পূর্ণ পুনর্নির্মাণের কারণ হতে পারে যা খুব করুণাময় হবে না।
আমি যা চাই তা কেবলমাত্র সি ফাইলগুলির জন্য যা আমি পুনর্নির্মাণের জন্য পরিবর্তিত শিরোলেখ ফাইলটি অন্তর্ভুক্ত করে এবং পুরো প্রকল্পটি আবার সংযুক্ত হওয়ার জন্য। আমি সমস্ত শিরোলেখ ফাইলকে টার্গেটের নির্ভরতা তৈরি করে লিঙ্কিংটি করতে পারি, তবে অন্তর্ভুক্ত শিরোনাম ফাইলগুলি আরও নতুন করে যখন সি ফাইলগুলিকে অকার্যকর করা যায় তবে আমি তা বুঝতে পারি না।
আমি শুনেছি এটি সম্ভব করার জন্য জিসিসির কিছু কমান্ড রয়েছে (যাতে কোন ফাইলটি পুনরায় তৈরি করা দরকার তা মেকফিল একরকমভাবে জানতে পারে) তবে আমি আমার জীবনের পক্ষে এটি দেখতে বাস্তবের একটি উদাহরণ খুঁজে পাচ্ছি না। কেউ কি এমন কোনও সমাধান পোস্ট করতে পারেন যা কোনও মেকফাইলে এই আচরণকে সক্ষম করে?
সম্পাদনা: আমার স্পষ্ট করা উচিত, আমি পৃথক লক্ষ্যবস্তু স্থাপন এবং প্রতিটি টার্গেট রাখার ধারণার সাথে পরিচিত familiar যাতে হেডার ফাইলের প্রয়োজন হয়। এর জন্য প্রতিবারই আমি কোথাও শিরোনামের ফাইলটি কোথাও অন্তর্ভুক্ত করার জন্য আমাকে মেকফিল সম্পাদনা করতে হবে, যা কিছুটা ব্যথা। আমি এমন একটি সমাধান খুঁজছি যা শিরোনামের ফাইলের নিজস্বতা নির্ভর করতে পারে যা আমি নিজেই অন্যান্য প্রকল্পগুলিতে দেখেছি certain