реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Одинаковые имена файлов .c
drozel
сообщение Nov 18 2015, 09:36
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 108
Регистрация: 2-02-11
Пользователь №: 62 650



Есть проект с большим кол-вом файлов. Они структурированы по папкам и по группам в 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.

Сообщение отредактировал drozel - Nov 18 2015, 09:58
Go to the top of the page
 
+Quote Post
Непомнящий Евген...
сообщение Nov 18 2015, 11:22
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 771
Регистрация: 16-07-07
Из: Волгодонск
Пользователь №: 29 153



Если запускать компилятор вручную (из make) - можно указать имя свое объектника для каждого файла. К примеру, формировать его на основе пути.

Как сделать это из ИДЕ - не знаю sm.gif
Go to the top of the page
 
+Quote Post
Bass
сообщение Feb 25 2016, 05:37
Сообщение #3


Участник
*

Группа: Свой
Сообщений: 66
Регистрация: 5-08-10
Из: Томск
Пользователь №: 58 761



Кому-нибудь удалось решить вопрос компиляции файлов с одинаковыми названиями через IDE?
Go to the top of the page
 
+Quote Post
aiwa
сообщение Feb 26 2016, 13:51
Сообщение #4


Местный
***

Группа: Участник
Сообщений: 301
Регистрация: 13-12-15
Из: Харьков
Пользователь №: 89 682



Цитата(Bass @ Feb 25 2016, 07:37) *
Кому-нибудь удалось решить вопрос компиляции файлов с одинаковыми названиями через 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"
При изменении исхоодников достаточно лишь перекомпилировать проект.
Go to the top of the page
 
+Quote Post
x893
сообщение Apr 16 2016, 20:51
Сообщение #5


Профессионал
*****

Группа: Свой
Сообщений: 1 333
Регистрация: 27-10-08
Из: Планета Земля
Пользователь №: 41 226



А почему нельзя просто файл переименовать ?
Go to the top of the page
 
+Quote Post
aiwa
сообщение Apr 17 2016, 01:04
Сообщение #6


Местный
***

Группа: Участник
Сообщений: 301
Регистрация: 13-12-15
Из: Харьков
Пользователь №: 89 682



Цитата(x893 @ Apr 16 2016, 23:51) *
А почему нельзя просто файл переименовать ?

В таком случае нужно вручную отслеживать изменение переименованного файла в репозитарии и каждый раз
при изменении производить обновление переименованного файла.
А первоначальная задача - перекомпилировать без дополнительных телодвижений.
Go to the top of the page
 
+Quote Post
Alechek
сообщение May 16 2016, 16:01
Сообщение #7


Профессионал
*****

Группа: Свой
Сообщений: 1 241
Регистрация: 15-11-05
Из: Челябинск
Пользователь №: 10 882



есть и IAR еще интересная, почти недокументированая
#pragma module_name = "name"

По моему разумению, объектник должен выходить с этим именем.
Но IAR считает, видимо, иначе. На что она в итоге влияет, я понять не смог.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 7th July 2025 - 18:46
Рейтинг@Mail.ru


Страница сгенерированна за 0.01397 секунд с 7
ELECTRONIX ©2004-2016