Я пытаюсь создать пример приложения Atmel BitCloud v3.2 Blink с makefile в Linux и Mac. Все отлично работает в Windows. Но в Posix-подобных системах следующие строки не работают:Правило Makefile не выполняется в Linux
all: directories images root_files size
$(OBJ_PATH)/%.o: $(SRCS)
$(CC) $(CFLAGS) $(filter %/$(subst .o,.c,$(notdir [email protected])), $(SRCS)) -o [email protected]
Поэтому компилятор не выполняется и объектные файлы не создаются. В результате сообщения компоновщика отображается сообщение об ошибке, таких как
avr-gcc: error: All_MegaRf_Atmega256rfr2_8Mhz_Gcc/Obj/blink.o: No such file or directory
Линия $(OBJ_PATH)/%.o: $(SRCS)
является источником проблемы.
Если я заменил его на smth, как $(OBJ_PATH)/blink.o: ../../src/blink.c
, соответствующий объект-файл успешно создан.
я даже смог построить целое приложение, установив вручную строить цели следующим образом:
$(OBJ_PATH)/blink.o: ../../src/blink.c
$(CC) $(CFLAGS) $(filter %/$(subst .o,.c,$(notdir [email protected])), $(SRCS)) -o [email protected]
$(OBJ_PATH)/stdPdsEvents.o: ../../../../BitCloud/Components/PersistDataServer/std/src/stdPdsEvents.c
$(CC) $(CFLAGS) $(filter %/$(subst .o,.c,$(notdir [email protected])), $(SRCS)) -o [email protected]
для всех .c файлов в проекте.
Список источников, с другой стороны, определяется следующим образом:
SRCS = \
../../src/blink.c \
../../../../BitCloud/Components/PersistDataServer/std/src/stdPdsMemAccess.c \
../../../../BitCloud/Components/PersistDataServer/std/src/stdPdsTimer.c \
Может кто-нибудь помочь мне выяснить, почему сопрягает шаблон не работает и как его восстановить.
Примечание: подобная тема уже была открыта here, но решение, найденное автором самого автора, на мой взгляд не было хорошо объяснено, поэтому я не смог решить свою проблему.
@ MichaëlAzevedo: Ваше последнее редактирование, похоже, удалило семантически важные пробелы. Пожалуйста, воздержитесь от редактирования кода на незнакомых вами языках. Благодарю. – tripleee
@tripleee Мой плохой, я пытался заменить рюкзаки с помощью отступов кода. Должен ли я вернуться к предыдущей? –
@ MichaëlAzevedo Нет необходимости; Я уже восстановил потерянные вкладки. Спасибо, что так быстро ответил. – tripleee