drozel 0 18 ноября, 2015 Опубликовано 18 ноября, 2015 (изменено) · Жалоба Есть проект с большим кол-вом файлов. Они структурированы по папкам и по группам в IAR. По стечению обстоятельств 2 файла именуются одинаково. При компиляции ошибка: Build error: Multiple tools write to the same file. File: X:\svn_checkout\switchbox\mcu\projects\IAR\mainapp\Debug\Obj\timer.o Tool 1: C/C++ Compiler, when processing X:\svn_checkout\switchbox\mcu\libs\contikiOS\core\sys\timer.c Tool 2: C/C++ Compiler, when processing X:\svn_checkout\switchbox\mcu\libs\libopencm3\lib\stm32\f4\timer.c Видно, что оба файла - из либ, подключаются через svn с репы и переименовывать их не получится. Как обойти такой странный прикол? Почему бы компилятору не кидать объектники по разным папкам в соответствии со структурой сорцов? Предвосхищая совет по multi-file compilation. Эта штука вообще странная. После ее включения эта ошибка действительно пропала, но появились странности: Странность раз. void blocking_handler(void); __weak void nvic_wwdg_isr(void); #pragma weak nvic_wwdg_isr = blocking_handler ведет к Error[Pe1152]: declaration aliased to undefined entity "blocking_handler" хотя до включения этой опции все было ок. К тому же, странно то, что таких алиасов около 100 (для всех прерываний, разные только имена), а ошибки только на первой половине из них Странность два. Error[Pe1061]: declaration of function "protocolInit" is incompatible with a declaration in another translation unit "__interwork __softfp int protocolInit()" (declared at line 62 of main.c") "__interwork __softfp void protocolInit(void)" (declared at line 65 protocol.c") на том, что раньше было просто declared implicity. Изменено 18 ноября, 2015 пользователем drozel Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Johnny81 0 18 ноября, 2015 Опубликовано 18 ноября, 2015 · Жалоба Если запускать компилятор вручную (из make) - можно указать имя свое объектника для каждого файла. К примеру, формировать его на основе пути. Как сделать это из ИДЕ - не знаю :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Bass 0 25 февраля, 2016 Опубликовано 25 февраля, 2016 · Жалоба Кому-нибудь удалось решить вопрос компиляции файлов с одинаковыми названиями через IDE? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aiwa 0 26 февраля, 2016 Опубликовано 26 февраля, 2016 · Жалоба Кому-нибудь удалось решить вопрос компиляции файлов с одинаковыми названиями через IDE? Очень коряво, но проблему с обновлением исходных файлов со стороны решает. В случае из топа удаляем из проекта "X:\svn_checkout\switchbox\mcu\libs\libopencm3\lib\stm32\f4\timer.c" и добавляем вместо него файл "X:\svn_checkout\switchbox\mcu\libs\libopencm3\lib\stm32\f4\emu_timer.c" из одной строки: "#include timer.cpp" При изменении исхоодников достаточно лишь перекомпилировать проект. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
x893 35 16 апреля, 2016 Опубликовано 16 апреля, 2016 · Жалоба А почему нельзя просто файл переименовать ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aiwa 0 17 апреля, 2016 Опубликовано 17 апреля, 2016 · Жалоба А почему нельзя просто файл переименовать ? В таком случае нужно вручную отслеживать изменение переименованного файла в репозитарии и каждый раз при изменении производить обновление переименованного файла. А первоначальная задача - перекомпилировать без дополнительных телодвижений. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alechek 0 16 мая, 2016 Опубликовано 16 мая, 2016 · Жалоба есть и IAR еще интересная, почти недокументированая #pragma module_name = "name" По моему разумению, объектник должен выходить с этим именем. Но IAR считает, видимо, иначе. На что она в итоге влияет, я понять не смог. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться