реклама на сайте
подробности

 
 
> Использование IAR из GNU make
grisha_scorpion
сообщение Sep 23 2013, 07:47
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 26
Регистрация: 24-08-10
Пользователь №: 59 074



Как прикрутить IAR к GNU make? Проблемы при составлении makefile для правильной сборки проекта. У кого есть опыт использования, делимся решениями.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 6)
scifi
сообщение Sep 23 2013, 08:10
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Всё как обычно. Единственный нюанс: пути к файлам в целях для 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)
Go to the top of the page
 
+Quote Post
KRS
сообщение Sep 23 2013, 10:14
Сообщение #3


Профессионал
*****

Группа: Модераторы
Сообщений: 1 951
Регистрация: 27-08-04
Из: Санкт-Петербург
Пользователь №: 555



А Вам на каком уровне надо?
полноценный makefile или просто что бы через консоль собиралось?
если просто через консоль, так IarBuild есть.
Go to the top of the page
 
+Quote Post
grisha_scorpion
сообщение Sep 23 2013, 12:26
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 26
Регистрация: 24-08-10
Пользователь №: 59 074



Цитата(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 и разобраться во всём этом.

Сообщение отредактировал grisha_scorpion - Sep 23 2013, 12:27
Go to the top of the page
 
+Quote Post
scifi
сообщение Sep 23 2013, 12:49
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Цитата(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?

Нет, не формирует.
Go to the top of the page
 
+Quote Post
KRS
сообщение Sep 23 2013, 14:29
Сообщение #6


Профессионал
*****

Группа: Модераторы
Сообщений: 1 951
Регистрация: 27-08-04
Из: Санкт-Петербург
Пользователь №: 555



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

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

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


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


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

Go to the top of the page
 
+Quote Post
Непомнящий Евген...
сообщение Sep 25 2013, 12:35
Сообщение #7


Знающий
****

Группа: Свой
Сообщений: 771
Регистрация: 16-07-07
Из: Волгодонск
Пользователь №: 29 153



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

Эклипс можно настроить так, что бы он при билде проекта выполнял команду в консоли - создаешь там мейкфайл-проект и дальше копаешься в его настройках.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 22:16
Рейтинг@Mail.ru


Страница сгенерированна за 0.01415 секунд с 7
ELECTRONIX ©2004-2016