Страница 2 из 2

Re: Правильное подключение #include

Добавлено: Пт мар 25, 2022 00:43:03
COKPOWEHEU
с чего бы? Этим автоматика занимается, она в отличие от человека в состоянии отследить были ли изменения и надо ли пересобирать весть проект или только отдельные части.

Re: Правильное подключение #include

Добавлено: Пт мар 25, 2022 01:44:51
GoldenAndy
[uquote="ARV",url="/forum/viewtopic.php?p=4203029#p4203029"]только ваш подход чреват тем, что собирая новый проект из "отработанных и гарантированно работающих" старых файлов, вы рискуете в одном из них забыть про какой-то дефайн, и получить чудеса...[/uquote]
Да нет...
Я в глобальный инклудник выношу только то, что общее для конкретного проекта.
Там нет кода, только дефайны и тайпдефы.
И даже если я что то использованное забираю - то смотрю, что забираю.
А бездумное копирование - это пусть пионэры делают. Им можно, они любят трудности."Стоя и в гамаке".
а я старый ленивый инженер.

Re: Правильное подключение #include

Добавлено: Пт мар 25, 2022 10:39:36
COKPOWEHEU
Да многие наверное так делают. У меня например тоже есть hardware.h, в котором вынесены пины и настройки используемой периферии. Но у меня он явно подключается в каждую периферию.

Re: Правильное подключение #include

Добавлено: Пт мар 25, 2022 13:17:53
GoldenAndy
COKPOWEHEU, ну вот кстати, тоже правильно.
Я изначально ВСЮ коммуникацию с периферией описываю в HAL.h/HAL.c с целью максимально абстрагироваться от железа
Наружу торчат безликие getButton, setLed, низкоуровневые процедуры отправки данных в дисплей и т.д.
Это позволяет мне менять в проекте МК на другой (при условии, что периферия подходящая есть). Пригождалось пару раз. Миграция была с АВР на СТМ.
Просто переписал HAL - и всё заработало.

Re: Правильное подключение #include

Добавлено: Пт мар 25, 2022 14:52:29
DX168B
[uquote="GoldenAndy",url="/forum/viewtopic.php?p=4203019#p4203019"]ARV, я не любитель руками править всякие ключи компилятора, редактировать make и прочее...[/uquote]

Да хоспади, что там в Makefile редактировать-то?

Я их вообще руками пишу с нуля.

Простой Makefile, для простого проекта, поддерживающий инкрементную сборку и переваривающий как .c так и .cpp файлы.
При желании и после небольших правок можно использовать и для avr-gcc.
Требует три папки:
src - для исходников
inc - для заголовочников
obj - для объектных файлов и файлов зависимостей.
Спойлер

Код: Выделить всё

#********************************************************
# Makefile
# 
# $@ target name (имя цели)
# $^ all depends of target (список всех зависимостей цели)
# $? only new depends in target (только новые зависимости цели)
# $< first depend name from target (имя первой зависимости цели)
# 

#********************************************************
# PROJECT CONFIG

OUTLIB = luamqtt.so
INC_DIR = inc
SRC_DIR = src
OBJ_DIR = obj
LDLIBS = -l mosquitto -l m -l lua
DEFINES = -D_DEBUG
DEBUG_START = lua luamqtt_test.lua

CC = gcc
CCFLAGS = -fPIC -std=c99

CXX = g++
CXXFLAGS = -fPIC

LD = ld
LDFLAGS = -shared

#********************************************************
# WORK VARIABLES

DEPENDS = $(wildcard $(OBJ_DIR)/*.d)
OBJECTS = $(OBJ_DIR)/*.o

CCSRC = $(wildcard $(SRC_DIR)/*.c)
CCOBJ = $(CCSRC:$(SRC_DIR)/%.c=$(OBJ_DIR)/%.o)

CXXSRC = $(wildcard $(SRC_DIR)/*.cpp)
CXXOBJ = $(CXXSRC:$(SRC_DIR)/%.cpp=$(OBJ_DIR)/%.o)

#********************************************************
# MAIN TARGETS

.PHONY: clean

all: $(OUTLIB)

rebuild: clean all

debug: $(OUTLIB)
	$(DEBUG_START)
	
clean:
	@rm -rf $(OBJECTS) $(DEPENDS) $(OUTLIB)
	@echo [ MAKE ] CLEAN FINISH

#********************************************************
# DEPENDS OF MAIN TARGETS

$(OUTLIB): $(CCOBJ) $(CXXOBJ) 
	@echo [ LD ] BUILDING $(OUTLIB)
	@$(LD) $(LDFLAGS) -soname $(OUTLIB) -o $(OUTLIB) $(LDLIBS) $(OBJECTS)
	@echo [ MAKE ] FINISH
	
$(OBJ_DIR)/%.o: $(SRC_DIR)/%.c
	@echo [ CC ] COMPILING $<
	@$(CC) -MMD $(DEFINES) -c $(CCFLAGS) -I $(INC_DIR) -o $@ $<
	
$(OBJ_DIR)/%.o: $(SRC_DIR)/%.cpp
	@echo [ CXX ] COMPILING $<
	@$(CXX) -MMD $(DEFINES) -c $(CXXFLAGS) -I $(INC_DIR) -o $@ $<

include $(DEPENDS)


Re: Правильное подключение #include

Добавлено: Пт мар 25, 2022 15:17:52
GoldenAndy
DX168B, Я их вообще не создаю.
В IDE создаю проект, пишу код, жму F7 - собралось. Жму F11 - прошивка в МК.

Re: Правильное подключение #include

Добавлено: Пт мар 25, 2022 15:27:11
DX168B
На каком-нибудь сервере (причем, на железе, подобном Raspberry Pi), через SSH особо со средой не поработаешь.
Конечно, такие среды, как Visual Studio Code содержат различные инструменты для облегчения такой работы.
Однако, даже они требуют знаний из области DevOps (то есть, Makefile и прочий скриптинг для сборки и деплоинга)
Собственно, приведенный выше makefile писался как раз для удаленной сборки и отладки компонента на целевой железке.
Даже в случае МК и ПЛИС были случаи на практике, когда прошиваемая железка была на стенде в соседнем помещении, программатор подключен к одноплатному ПК, на котором код собирался и шился в железо удаленно.

Re: Правильное подключение #include

Добавлено: Пт мар 25, 2022 17:32:44
GoldenAndy
DX168B, ну вообще то тема создана в форуме AVR.
И практически все популярные IDE для АВРок "из коробки" позволяют откомпилить проект без ручного makefile
Ну вот серьезно...
Случаи железки в другом помещении - это частный случай. И далеко не типичный.
У меня тоже умный дом со своей сеткой. И кучкой устройств по всей квартире.
Там бутлоадеры, что в АВРках, что в СТМках. И отправка прошивки туда - не вставая со стула. Нужен только хекс.
А компилится это всё в той же IDE.
--
Тут сколько людей, столько и мнений. Кого то винда устраивает, а кому то линукс мать-отец и любовница в одном флаконе.
Кто то любит все конфиги писать руками, а кому то достаточно написать printf(hello world) и нажать F7...
Да, конфиги вручную дают ощущение более полного контроля над проектом. Может быть, да. Какие то твики не всегда можно из свойств проекта накликать мышкой. но это мелочи и частности. особенно для Hello, world.
Как то мы плавно от вопроса про инклюдники уплываем в бухту холиваров.

Re: Правильное подключение #include

Добавлено: Пт мар 25, 2022 20:46:12
ARV
GoldenAndy писал(а):Как то мы плавно от вопроса про инклюдники уплываем в бухту холиваров.
надо как-то иначе формулировать... например, от шторма инклюдников в бухту холиваров... или от берега темы в тайфун холиваров... а то конец фразы с началом не вяжется :)))

Re: Правильное подключение #include

Добавлено: Пт мар 25, 2022 22:23:43
GoldenAndy
ARV, ну поскольку инклюдники идут один за одним - шторм подходит