Очень просто - компилятору эти файлы передаются как аргументы командной строки.aam писал(а):А вообще, как компилятор определяет из каких сишников состоит именно этот проект?
Вот, например, мой Makefile под gcc (писал библиотеку для графического дисплея для AVR):
Код: Выделить всё
TARG=ks0108lib
SRCS = main.c ks0108.c
MCU = atmega16
F_CPU = 16000000L
OPTIMIZE = -Os -mcall-prologues
CFLAGS = -g -Wall -Werror -lm $(OPTIMIZE) -mmcu=$(MCU) -DF_CPU=$(F_CPU)
LDFLAGS = -g -Wall -Werror -mmcu=$(MCU)
OBJS = $(SRCS:.c=.o)
CC = avr-gcc
OBJCOPY = avr-objcopy
AVRDUDE = avrdude
all: $(TARG)
$(TARG): $(OBJS)
$(CC) $(LDFLAGS) -o $@.elf $(OBJS) -lm
$(OBJCOPY) -O binary -R .eeprom -R .nwram $@.elf $@.bin
$(OBJCOPY) -O ihex -R .eeprom -R .nwram $@.elf $@.hex
%.o: %.c
$(CC) $(CFLAGS) -c -o $@ $<Код: Выделить всё
$(CC) $(CFLAGS) -c -o $@ $<
$(CC) $(LDFLAGS) -o $@.elf $(OBJS) -lmКод: Выделить всё
avr-gcc -g -Wall -Werror -lm -Os -mcall-prologues -mmcu=atmega16 -DF_CPU=16000000L -c -o main.c ks0108.c
avr-gcc -g -Wall -Werror -mmcu=atmega16 -o ks0108lib.elf main.o ks0108.o -lmЛюбой другой компилятор по сути делает то же самое - те файлы, которые перечислены в "проекте", просто перечисляются как аргументы командной строки исполняемого файла компилятора


