Как сгенерировать независимый makefile из Eclipse CDT

#c #eclipse #makefile #eclipse-cdt

#c #eclipse #makefile #eclipse-cdt

Вопрос:

Я создал проект с использованием Eclipse CDT на ARM. Многие настройки были изменены в Eclipse. Включите каталоги, параметры компилятора и т. Д…

Мне нужно сгенерировать makefile, который способен генерировать оправдываемое из командной строки.

Я заметил, что в каталоге Debug есть несколько файлов:

makefile , objects.mk , sources.mk , subdir.mk

В каждом каталоге внутри Debug также есть subdir.mk файл, так что, похоже, все на месте. Немного неудобно иметь так много файлов. Я бы предпочел иметь только один, поскольку он генерируется автоматически. Тем не менее, когда я пытаюсь использовать makefile, я получаю сообщение об ошибке:

 [user@athena VDIU]$ make -f Debug/makefile
    Building target: VDIU.elf
    Invoking: GNU ARM Cross C Linker
    arm-none-eabi-gcc -mcpu=cortex-m7 -mthumb -mfloat-abi=softfp -mfpu=fpv5-sp-d16 -O0 -fmessage-length=0 -fsigned-char -ffunction-sections -fdata-sections  -g3 -Xlinker --gc-sections -Xlinker --script="../../../config/linker-script-flash.ld" -Wl,-Map,"VDIU.map" -o "VDIU.elf"   
    /bin/sh: arm-none-eabi-gcc: command not found
    Debug/makefile:64: recipe for target 'VDIU.elf' failed
    make: *** [VDIU.elf] Error 127
  

Кажется, он жалуется на arm-none-eabi-gcc, хотя при компиляции в Eclipse все хорошо. (Вывод консоли компиляции в Eclipse довольно большой, но я показываю ниже только один из файлов)

 Building file: ../VDIU_main.c
Invoking: GNU ARM Cross C Compiler
arm-none-eabi-gcc -mcpu=cortex-m7 -mthumb -mfloat-abi=softfp -mfpu=fpv5-sp-d16 -O0 -fmessage-length=0 -fsigned-char -ffunction-sections -fdata-sections  -g3 -D__SAME70Q21__ -D__FREERTOS__ -DARM_MATH_CM7=true -DBOARD=SAME70_XPLAINED -DDEBUG -Dprintf=iprintf -I../../../ -I../../../config -I../../../board -I../../../ASF -I../../../ASF/sam/boards -I../../../ASF/sam/boards/same70_xplained -I../../../ASF/sam/drivers/uart -I../../../ASF/sam/drivers/mpu -I../../../ASF/sam/drivers/pio -I../../../ASF/sam/drivers/usart -I../../../ASF/sam/drivers/pmc -I../../../ASF/sam/drivers/twihs -I../../../ASF/sam/utils -I../../../ASF/sam/utils/header_files -I../../../ASF/sam/utils/preprocessor -I../../../ASF/sam/utils/fpu -I../../../ASF/sam/utils/cmsis/same70/include/component -I../../../ASF/sam/utils/cmsis/same70/include -I../../../ASF/sam/utils/cmsis/same70/include/instance -I../../../ASF/sam/utils/cmsis/same70/include/pio -I../../../ASF/sam/utils/cmsis/same70/source/templates -I../../../ASF/common/utils -I../../../ASF/common/utils/interrupt -I../../../ASF/common/utils/stdio/stdio_serial -I../../../ASF/common/services/clock -I../../../ASF/common/services/clock/same70 -I../../../ASF/common/services/ioport -I../../../ASF/common/services/ioport/sam -I../../../ASF/common/services/serial -I../../../ASF/common/services/serial/sam_uart -I../../../ASF/common/services/gpio -I../../../ASF/common/services/gpio/sam_gpio -I../../../ASF/common/boards -I../../../ASF/thirdparty/freertos/freertos-10.0.0/Source/include -I../../../ASF/thirdparty/freertos/freertos-10.0.0/Source/portable/GCC/ARM_CM7/r0p1 -I../../../ASF/thirdparty/freertos/FreeRTOS-Plus-TCP/include -I../../../ASF/thirdparty/freertos/FreeRTOS-Plus-TCP/source/portable/Compiler/GCC -I../../../ASF/thirdparty/freertos/FreeRTOS-Plus-TCP/source/portable/NetworkInterface/include -I../../../ASF/thirdparty/freertos/FreeRTOS-Plus-TCP/source/portable/NetworkInterface/DriverSAM -I../../../ASF/thirdparty/CMSIS/Include -std=gnu11 -g -MMD -MP -MF"VDIU_main.d" -MT"VDIU_main.o" -c -o "VDIU_main.o" "../VDIU_main.c"
Finished building: ../VDIU_main.c
  

Комментарии:

1. На самом деле это не вопрос C.

2. arm-none-eabi-gcc отсутствует в вашей переменной PATH. Eclipse установит этот путь на основе выбранного набора инструментов.

3. Разве переменная PATH не должна быть установлена в makefile? Если это не так, то makefile никогда не сможет быть запущен сам по себе… Есть ли другой файл, который может быть создан Eclipse, который вызывает make после правильной настройки всех переменных среды?