Перейти к содержанию
    

Использование IAR из GNU make

Как прикрутить IAR к GNU make? Проблемы при составлении makefile для правильной сборки проекта. У кого есть опыт использования, делимся решениями.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Всё как обычно. Единственный нюанс: пути к файлам в целях для make желательно делать с обратными дробями (\) и с полным путём. Всё потому, что яровский компилятор именно в таком формате генерирует списки зависимостей.

Ниже рабочий пример. Там включена многофайловая компиляция. Для компиляции каждого файла по отдельности будет чуть-чуть сложнее (если интересно, тоже могу выложить).

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)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А Вам на каком уровне надо?

полноценный makefile или просто что бы через консоль собиралось?

если просто через консоль, так IarBuild есть.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А Вам на каком уровне надо?

полноценный makefile или просто что бы через консоль собиралось?

если просто через консоль, так IarBuild есть.

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

 

Всё как обычно. Единственный нюанс: пути к файлам в целях для make желательно делать с обратными дробями (\) и с полным путём. Всё потому, что яровский компилятор именно в таком формате генерирует списки зависимостей.

Ниже рабочий пример. Там включена многофайловая компиляция. Для компиляции каждого файла по отдельности будет чуть-чуть сложнее (если интересно, тоже могу выложить).

NAME=uberdevice
CC=iccstm8
LD=ilinkstm8
.......

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

 

А IAR не формирует автоматом makefile? То есть допустим ты в IARе создал проект, выбрал все настройки и после сборки формируется файл(makefile) в какой-нибудь папочке.Если есть допустим такая реализация, то будет проще на основе этого создать свой универсальный makefile и разобраться во всём этом.

Изменено пользователем grisha_scorpion

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Видимо, в порядке обучения. Вообще Makefile может иметь следующие преимущества:

- настройки компилятора и линкера чётко прописаны (не нужно гоняться за галочками в IDE, если что-то пошло не так)

- если в процессе сборки нужно подтягивать файлы ресурсов (веб-страницы, шрифты), то это делается легко

- make умеет раскидывать компиляцию на несколько процессоров (make -j4), что приятно

- ну и т.д.

Недостаток, естественно, состоит в том, что надо учиться.

 

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

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

 

А IAR не формирует автоматом makefile?

Нет, не формирует.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Про IarBuild тоже будет интересно узнать что это.

IarBuild это программа которую использует сам IAR для сборки проекта.

Т.е. если вы пользуетесь средой IAR, создали проект, то при сборке IAR запускает IarBuild.

Справку можно получить просто запустив.

 

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

Так - это тот же эффект, если в IDE выполнить команду.

 

 

или в Eclipse?

 

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

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

Эклипс можно настроить так, что бы он при билде проекта выполнял команду в консоли - создаешь там мейкфайл-проект и дальше копаешься в его настройках.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...