Как преобразовать управляемый проект Eclipse в автономный проект Makefile? - PullRequest
0 голосов
/ 10 июня 2019

Я сейчас работаю над уже существующим проектом, который был создан с помощью eclipse. Он использует 'CDT Internal Builder', который генерирует make-файлы в путь / Debug и все его подкаталоги. Он строит просто отлично, но я бы не хотел зависеть от использования затмения.

Я попытался скопировать все make-файлы в один единственный make-файл, который я хотел сохранить в главном каталоге (а не в каталоге / Debug), однако, поскольку существует несколько подкаталогов с большим количеством файлов, это, похоже, быть крайне неэффективным, и полученный файл был бы длинным и неструктурированным.

Я также попробовал следующие предложения по этому вопросу, однако они не помогли: Как преобразовать управляемый Eclipse проект cdt в Makefiles

Каждый из файлов subdir.mk содержит три раздела, в которых перечислены все файлы:

C_SRCS += \
../src/gps/gps.c \
../src/gps/minmea.c 
# ...

OBJS += \
./src/gps/gps.o \
./src/gps/minmea.o 
# ...

C_DEPS += \
./src/gps/gps.d \
./src/gps/minmea.d 
# ...

и содержит собственное правило сборки:

src/gps/%.o: ../src/gps/%.c
    @echo 'Building file: $<'
    @echo 'Invoking: Cross ARM C Compiler'
    arm-none-eabi-gcc -mcpu=cortex-m4 -mthumb -mfloat-abi=hard -mfpu=fpv4-sp-d16 -O3 -fmessage-length=0 -fsigned-char -ffunction-sections -fdata-sections -ffreestanding -fno-move-loop-invariants -Wunused -Wuninitialized -Wall -Wextra -Wmissing-declarations -Wconversion -Wpointer-arith -Wpadded -Wshadow -Wlogical-op -Waggregate-return -Wfloat-equal  -g3 -DARM_MATH_CM4 -D__FPU_PRESENT -DDEBUG -DUSE_FULL_ASSERT -DTRACE -DOS_USE_TRACE_ITM -DSTM32F407xx -DUSE_HAL_DRIVER -DHSE_VALUE=10000000 -I"../include" -I"../system/include" -I"../system/include/cmsis" -I"../system/include/stm32f4-hal" -std=gnu11 -Wmissing-prototypes -Wstrict-prototypes -Wbad-function-cast -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@)" -c -o "$@" "$<"
    @echo 'Finished building: $<'
    @echo ' '

Копировать это для всех моих файлов кажется слишком сложным, тем более что один и тот же файл указан трижды.

Неужели должен быть более простой способ достичь этого?

Идеальным решением было бы иметь один единственный make-файл в главном каталоге.

...