toweroff 0 29 июля, 2019 Опубликовано 29 июля, 2019 · Жалоба Добрый день В скаттере используются константы, определённые в .h файле В самом хидере есть условия определения, зависящие от Target. В частности, в цели Release определяется некая TARGET_RELEASE Так вот в самом проекте всё в порядке, определение находится, но в скаттер это не передаётся - по сути подключаемый хидер как бы "сферический конь", сам по себе, поэтому определения получаются неверными Как заставить скаттер видеть определения из Options -> C/C++ -> Define ? По сути, определяя что-то в свойствах проекта, просто добавляется к строке компилятора -D<define> Но вот как это сделать в скаттере с его #! armcc -E ... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Forger 17 29 июля, 2019 Опубликовано 29 июля, 2019 · Жалоба 1 hour ago, toweroff said: Как заставить скаттер видеть определения из Options -> C/C++ -> Define ? Я делаю так: под каждую сборку (Debug, Release, Production и т.п.) создается СВОЙ scatter файл, он лежит в своем отдельном каталоге (совпадает по названию с о сборкой). Т.е. для каждой такой сборки свой каталог со своими промежуточными output файлами, так нет путаницы с другими сборками. Если вам такой вариант с каталогами не нравится, то делайте scatter файлы с уникальными именами и кладите их в общую кучу. В свойствах проекта нужно убрать галку (см. рис), тогда появиться возможность указать путь к самописному scatter файлу. Так нужно настроить для каждого варианта сборки. Кнопочка "EDIT" позволяет прямо в Keil открыть этот скаттер файл и оттуда править. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
x893 35 29 июля, 2019 Опубликовано 29 июля, 2019 · Жалоба Всё уже придумано и проверено https://www.google.com/search?q=Pre-process+scatter+files Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
toweroff 0 29 июля, 2019 Опубликовано 29 июля, 2019 · Жалоба 48 минут назад, Forger сказал: Я делаю так: под каждую сборку (Debug, Release, Production и т.п.) создается СВОЙ scatter файл, он лежит в своем отдельном каталоге (совпадает по названию с о сборкой). Это понятно, тоже так делал. В общем можно для конкретной цели в Linker Misc добавить что-то типа --predefine="-DTARGET_RELEASE" Тогда в хидере, который подключает скаттер, будет объявлена TARGET_RELEASE и всё начинает видеться и работать как надо Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться