Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Использование IAR из GNU make
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Cредства разработки для МК > IAR
grisha_scorpion
Как прикрутить IAR к GNU make? Проблемы при составлении makefile для правильной сборки проекта. У кого есть опыт использования, делимся решениями.
scifi
Всё как обычно. Единственный нюанс: пути к файлам в целях для make желательно делать с обратными дробями (\) и с полным путём. Всё потому, что яровский компилятор именно в таком формате генерирует списки зависимостей.
Ниже рабочий пример. Там включена многофайловая компиляция. Для компиляции каждого файла по отдельности будет чуть-чуть сложнее (если интересно, тоже могу выложить).
CODE
NAME=uberdevice
CC=iccstm8
LD=ilinkstm8
CFLAGS=--mfc --discard_unused_publics --silent -e --debug --code_model small --data_model medium
LDFLAGS=--silent --config link.icf --map $(MAP)
OBJ=$(NAME).o
OUT=$(NAME).out
HEX=$(NAME).hex
MAP=$(NAME).map
DEP=$(NAME).d
SRC=$(subst /,\,$(addprefix $(CURDIR)/, $(wildcard src/*.c)))

ifeq ($(DEBUG), 1)
CFLAGS += -On
else
CFLAGS += -Ohz -DNDEBUG
endif

.PHONY: all clean

all: $(HEX)

$(HEX): $(OUT)
@echo Generating HEX...
@ielftool $(OUT) $(HEX) --ihex --silent

$(OUT): $(OBJ)
@echo Linking...
@$(LD) $(OBJ) $(LDFLAGS) -o $(OUT)

$(OBJ): $(SRC)
@echo Compiling...
@$(CC) $(SRC) $(CFLAGS) --dependencies=m $(DEP) -o $(OBJ)

clean:
@rm -f $(NAME).*
@echo Done cleaning

-include $(DEP)
KRS
А Вам на каком уровне надо?
полноценный makefile или просто что бы через консоль собиралось?
если просто через консоль, так IarBuild есть.
grisha_scorpion
Цитата(KRS @ Sep 23 2013, 13:14) *
А Вам на каком уровне надо?
полноценный makefile или просто что бы через консоль собиралось?
если просто через консоль, так IarBuild есть.

Меня интересует полноценный makefile. Про IarBuild тоже будет интересно узнать что это.

Цитата(scifi @ Sep 23 2013, 11:10) *
Всё как обычно. Единственный нюанс: пути к файлам в целях для make желательно делать с обратными дробями (\) и с полным путём. Всё потому, что яровский компилятор именно в таком формате генерирует списки зависимостей.
Ниже рабочий пример. Там включена многофайловая компиляция. Для компиляции каждого файла по отдельности будет чуть-чуть сложнее (если интересно, тоже могу выложить).
CODE
NAME=uberdevice
CC=iccstm8
LD=ilinkstm8
.......

А как это прикрутить в CodeBlocks или в Eclipse? Или что то лучшее предложите?

А IAR не формирует автоматом makefile? То есть допустим ты в IARе создал проект, выбрал все настройки и после сборки формируется файл(makefile) в какой-нибудь папочке.Если есть допустим такая реализация, то будет проще на основе этого создать свой универсальный makefile и разобраться во всём этом.
scifi
Цитата(grisha_scorpion @ Sep 23 2013, 16:26) *
Меня интересует полноценный makefile. Про IarBuild тоже будет интересно узнать что это.

Видимо, в порядке обучения. Вообще Makefile может иметь следующие преимущества:
- настройки компилятора и линкера чётко прописаны (не нужно гоняться за галочками в IDE, если что-то пошло не так)
- если в процессе сборки нужно подтягивать файлы ресурсов (веб-страницы, шрифты), то это делается легко
- make умеет раскидывать компиляцию на несколько процессоров (make -j4), что приятно
- ну и т.д.
Недостаток, естественно, состоит в том, что надо учиться.

Цитата(grisha_scorpion @ Sep 23 2013, 16:26) *
А как это прикрутить в CodeBlocks или в Eclipse? Или что то лучшее предложите?

Этими программами не пользуюсь. Видел, правда, что в Eclipse можно указать свой Makefile.

Цитата(grisha_scorpion @ Sep 23 2013, 16:26) *
А IAR не формирует автоматом makefile?

Нет, не формирует.
KRS
Цитата(grisha_scorpion @ Sep 23 2013, 16:26) *
Про IarBuild тоже будет интересно узнать что это.

IarBuild это программа которую использует сам IAR для сборки проекта.
Т.е. если вы пользуетесь средой IAR, создали проект, то при сборке IAR запускает IarBuild.
Справку можно получить просто запустив.

Это полезно только в том случае если вы и так пользуетесь IAR средой, но в скрипте собирать проекты (например какие то данные генерятся).
Так - это тот же эффект, если в IDE выполнить команду.


Цитата(grisha_scorpion @ Sep 23 2013, 16:26) *
или в Eclipse?


Так к еклипсу родной IAR плагин есть! Там даже отладчик вроде как работает.

Непомнящий Евгений
В консоли ИАРа можно настроить вывод команд полностью (со всеми флагами). Затем на основе этих команд конструируете мейк-файл. Кстати, мейк - довольно древняя штука, возможно лучше сразу взять что поновее и поудобней - cmake / scons / waf / ...

Эклипс можно настроить так, что бы он при билде проекта выполнял команду в консоли - создаешь там мейкфайл-проект и дальше копаешься в его настройках.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.