По стечению обстоятельств 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
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
__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")
"__interwork __softfp int protocolInit()" (declared at line 62 of main.c")
"__interwork __softfp void protocolInit(void)" (declared at line 65 protocol.c")
на том, что раньше было просто declared implicity.