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

IAR+CMAKE флаги компиляции

Добрый день!

Решил собрать проект на CMAKE для возможности сборки на разных компиляторах (интересно посмотреть какой в реальном проекте профит от коммерческих). До этого работал на GCC.

При компилировании IAR-ом есть несколько проблем:

      1. Нельзя указывать стандарт языка методами CMAKE(да и флагов компиляции для этого не нашёл).  Вот что в лог выводится: requires the language dialect "C11". But the current compiler "IAR" does not support this, or CMake does not know the flags to enable it.

      2. Какими флагами можно полностью избавится от CLIB? (-ffreestanding -nolibc  -nodefaultlibs -nostdlib ...)

      3. Как избавится от стандартного sturtup? хочу использовать свой стартап файл прямо в проекте.

      4. Как после компиляции вывести информацию о выходном файле? Размер секций .text .data .bss - в общем аналог утилиты size от gcc или флаг --print-memory-usage для gcc ликера.

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


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

7 часов назад, C2000 сказал:

Как избавится от стандартного sturtup? хочу использовать свой стартап файл прямо в проекте.

Об IAR для какого процессора речь? Для ARM, например, startup есть в любом проекте в виде исходника. Меняй сколько хочешь.

В папке с установленным IAR много разной документации. В EWARM_DevelopmentGuide.ENU.pdf много полезного.

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


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

1 hour ago, VladislavS said:

В папке с установленным IAR много разной документации. В EWARM_DevelopmentGuide.ENU.pdf много полезного.

Спасибо! Уже в чём то разобрался. 2 и 3 пункт снят. И по первому вроде бы более менее ясно для C++ стандарт даёт установить до 17, выше уже не поддерживает. Для Си похоже просто разделения на стандарты нет?

И с формированием hex и bin тоже все просто, хотя этот вопрос не указывал.

А вот 4 вопрос пока подвис. Посмотрю DevelopmentGuide может там найду что то. Он кроме того что не выводит размеров секций после компиляции, он ещё и во время компиляции никакого подробного лога не выдаёт - какой файл с какими флагами компилируется. Для GCC стандартной переменной CMAKE включается, а вот на IAR она не действует.

 

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


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

13 hours ago, C2000 said:

(да и флагов компиляции для этого не нашёл).

Я документацию не смотрел, но уверен, что такие флаги должны быть, т.к. компилятор - консольная утилита. Иным способом, кроме как через ключи, команды и условия работы ей не передать. Этому факту служит также и подтверждение в виде штатной утилиты iarbuild, позволяющей по готовому проекту получить независимо работающий скрипт консольной сборки. Но справедливости ради всё же я имел в виду только инструментарий для ARM, как наиболее распространённый. Если у Вас компилятор для иной архитектуры, то мои утверждения становятся уже не такими крепкими и уверенными.

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


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

Нижнее окно, где отображаются всякие мессаги - вторая кнопа мыши - show all.
Не то, что ищете случаем?

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


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

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

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

Гость
Ответить в этой теме...

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

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

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

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

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

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