Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: си препроцессор в gcc as
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Cредства разработки для МК > GNU/OpenSource средства разработки
MBR
Добрый день!

У кого-нибудь получалось работа с сабж? Информация об этом в интернете весьма скудна.

Проблема в том, что когда переименовываешь .s в .S, напрочь игнорируется VPATH в Makefile, равно как и include (согласно ману -I name). Кто-нибудь знает, как это побороть?
AHTOXA
gcc -x assembler-with-cpp ?

Цитата(MBR @ Jul 5 2012, 13:27) *
Проблема в том, что когда переименовываешь .s в .S, напрочь игнорируется VPATH в Makefile


Не замечал такого. Покажите свой Makefile, посмотрим...
Сергей Борщ
QUOTE (MBR @ Jul 5 2012, 10:27) *
У кого-нибудь получалось работа с сабж? Информация об этом в интернете весьма скудна.
Да всегда только так и работаем.
QUOTE (MBR @ Jul 5 2012, 10:27) *
Проблема в том, что когда переименовываешь .s в .S, напрочь игнорируется VPATH в Makefile,
А какое расширение там прописано? Покажите строчку.
QUOTE (MBR @ Jul 5 2012, 10:27) *
равно как и include (согласно ману -I name).
Это недопонял.

Система какая? Кроме .S есть еще одно решение: ASMFLAGS += -x assembler-with-cpp
MBR
Извините, был напуган (с) Что было, я так и не понял, но сейчас все заработало

Цитата(Сергей Борщ @ Jul 5 2012, 13:24) *
А какое расширение там прописано? Покажите строчку.

вот так выглядит строчка сборки:

.S.o:
@-mkdir -p $(BUILD_DIR)
@echo AS: $<
$(GCC) $(INCLUDES) -I. $(DEFINES) -c -x assembler-with-cpp ./$< -o $(BUILD_DIR)/$@

Цитата(Сергей Борщ @ Jul 5 2012, 13:24) *
Это недопонял.

В смысле, не искался как сам исходник по VPATH, так и не находился путь для инклудов.

Цитата(Сергей Борщ @ Jul 5 2012, 13:24) *
Система какая? Кроме .S есть еще одно решение: ASMFLAGS += -x assembler-with-cpp

arm-none-eabi-gcc (Sourcery G++ Lite 2011.03-42) 4.5.2.

Спасибо за флаг, это выглядит куда изящнее переименовывания файлов.

Еще вопрос по теме - во включенных файлах все, что не явлется препроцессором (typedef, enum, определение функций), выдает ошибку. Есть ли иное решение, кроме как оборачивать это препроцессором?
Сергей Борщ
QUOTE (MBR @ Jul 5 2012, 13:17) *
вот так выглядит строчка сборки:
Имелась ввиду строчка VPATH.
QUOTE (MBR @ Jul 5 2012, 13:17) *
arm-none-eabi-gcc (Sourcery G++ Lite 2011.03-42) 4.5.2.
sm.gif До него дело еще не дошло, за VPATH отвечает make. Система имелась ввиду Win/Lin/Mac?
QUOTE (MBR @ Jul 5 2012, 13:17) *
Есть ли иное решение, кроме как оборачивать это препроцессором?
либо обернуть в #ifndef __ASSEMBLER__, либо выносить в отдельный файл и не включать этот файл в ассемблерный исходник.
AHTOXA
Цитата(MBR @ Jul 5 2012, 16:17) *
$(GCC) $(INCLUDES) -I. $(DEFINES) -c -x assembler-with-cpp ./$< -o $(BUILD_DIR)/$@

А зачем вы поставили "./" перед "$<"? Может от этого VPATH и не работает?
MBR
Цитата(Сергей Борщ @ Jul 5 2012, 14:57) *
Имелась ввиду строчка VPATH.

Да все стандартно.

VPATH += $(INCLUDE_FOLDERS) $(BUILD_DIR)

Цитата(Сергей Борщ @ Jul 5 2012, 14:57) *
sm.gif До него дело еще не дошло, за VPATH отвечает make. Система имелась ввиду Win/Lin/Mac?

Linux

Цитата(Сергей Борщ @ Jul 5 2012, 14:57) *
либо обернуть в #ifndef __ASSEMBLER__, либо выносить в отдельный файл и не включать этот файл в ассемблерный исходник.

Спасибо, в итоге так и сделал, все работает.

Цитата(AHTOXA @ Jul 5 2012, 23:37) *
А зачем вы поставили "./" перед "$<"? Может от этого VPATH и не работает?

Нет, проблема не в этом была. Конфиг больше года назад писался и работал под разными проектами. "./" - это привычка после баша, чтобы убирать двусмысленность поиска, чтобы файлы искались от текущего каталога.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.