Я использую следующий VPATH попытаться размещения мои $ (OBJ) файлов:Makefile VPATH% .o не находя OBJ файлы
vpath %.o ./lib/obj
И моя цель установки как таковой:
# Link target
link:
@echo "\nLinking files"
$(CC) $(LINK_FLAGS) -o main.elf $(OBJS)
при взгляде на выходе, я получаю (для всех * .o файлов):
...error: misc.o: No such file or directory
Моя структура проекта выглядит следующим образом:
.
├── Makefile
├── inc
│ └── main.h
├── lib
│ ├── inc
│ │ ├── cmsis
│ │ │ ├── arm_common_tables.h
│ │ │ ├── ...
│ │ ├── peripherals
│ │ │ ├── misc.h
│ │ │ ├── ...
│ │ └── stm32f4xx
│ │ ├── stm32f4xx.h
│ │ ├── ...
│ ├── obj
│ │ ├── misc.o
│ ├── src
│ │ ├── peripherals
│ │ │ ├── misc.c
│ │ │ ├── ...
│ │ └── system_stm32f4xx.c
│ └── startup_stm32f4xx.s
├── src
│ └── main.c
└── stm32f4.ld
Почему мои файлы .o не найдены?
Полный выход для справки:
рычажного ни-EABI-GCC -T "stm32f3.ld" -nostartfiles -Wl, -Map, "main.map" -mcpu = кортекс-m4 - mthumb -g3 -gdwarf-2 -L "./" -o main.elf misc.o stm32f4xx_adc.o stm32f4xx_can.o stm32f4xx_crc.o stm32f4xx_cryp.o stm32f4xx_cryp_aes.o stm32f4xx_cryp_des.o stm32f4xx_cryp_tdes.o stm32f4xx_dac.o stm32f4xx_dbgmcu.o stm32f4xx_dcmi.o stm32f4xx_dma.o stm32f4xx_exti.o stm32f4xx_flash.o stm32f4xx_fsmc.o stm32f4xx_gpio.o stm32f4xx_hash.o stm32f4xx_hash_md5.o stm32f4xx_hash_sha1.o stm32f4xx_i2c.o stm32f4 xx_iwdg.o stm32f4xx_pwr.o stm32f4xx_rcc.o stm32f4xx_rng.o stm32f4xx_rtc.o stm32f4xx_sdio.o stm32f4xx_spi.o stm32f4xx_syscfg.o stm32f4xx_tim.o stm32f4xx_usart.o stm32f4xx_wwdg.o system_stm32f4xx.o
Да, это был бы утомительный способ сделать это вручную. Как указал Крис, вы хотите, чтобы объектные файлы соответствовали соответствующим правилам ссылки (чтобы они были перестроены, когда это необходимо, это большая часть использования make!). В этот момент вы также можете сделать это правильно и сделать это с помощью 'vpath' /' $ + ', воспользовавшись предпосылками, которые у вас есть. –