make: *** Нет правила для создания цели `main.o ' - PullRequest
6 голосов
/ 07 августа 2011

вот вывод из консоли в Eclipse:

 **** Build of configuration Debug for project FatFstest ****

make all 
make: *** No rule to make target `main.o', needed by `FatFstest.elf'.  Stop.

Я пытаюсь построить проект с использованием плагина AVR для Eclipse для тестирования библиотеки FatFs .Сначала я импортировал код FatFs, а затем создал файл main.c для его реализации.После того, как я попробовал собрать его в первый раз, я добавил папку src моего проекта в свой список каталогов в Свойства> Компилятор AVR> Каталоги, и все еще получаю ошибку сборки.Любая помощь?

Вот мой make-файл:

################################################################################
# Automatically-generated file. Do not edit!
################################################################################

-include ../makefile.init

RM := rm -rf

# All of the sources participating in the build are defined here
-include sources.mk
-include subdir.mk
-include src/subdir.mk
-include objects.mk

ifneq ($(MAKECMDGOALS),clean)
ifneq ($(strip $(C_DEPS)),)
-include $(C_DEPS)
endif
ifneq ($(strip $(ASM_DEPS)),)
-include $(ASM_DEPS)
endif
ifneq ($(strip $(S_DEPS)),)
-include $(S_DEPS)
endif
ifneq ($(strip $(S_UPPER_DEPS)),)
-include $(S_UPPER_DEPS)
endif
endif

-include ../makefile.defs

# Add inputs and outputs from these tool invocations to the build variables 
LSS += \
FatFstest.lss \

SIZEDUMMY += \
sizedummy \

AVRDUDEDUMMY += \
avrdudedummy \


# All Target
all: FatFstest.elf secondary-outputs

# Tool invocations
FatFstest.elf: $(OBJS) $(USER_OBJS)
    @echo 'Building target: $@'
    @echo 'Invoking: AVR C Linker'
    avr-gcc -Wl,-Map,FatFstest.map -mmcu=atmega328p -o"FatFstest.elf" $(OBJS) $(USER_OBJS) $(LIBS)
    @echo 'Finished building target: $@'
    @echo ' '

FatFstest.lss: FatFstest.elf
    @echo 'Invoking: AVR Create Extended Listing'
    -avr-objdump -h -S FatFstest.elf  >"FatFstest.lss"
    @echo 'Finished building: $@'
    @echo ' '

sizedummy: FatFstest.elf
    @echo 'Invoking: Print Size'
    -avr-size --format=avr --mcu=atmega328p FatFstest.elf
    @echo 'Finished building: $@'
    @echo ' '

avrdudedummy: FatFstest.elf
    @echo 'Invoking: AVRDude'
    /usr/local/CrossPack-AVR-20100115/bin/avrdude -pm328p -Uflash:w:FatFstest.hex:a
    @echo 'Finished building: $@'
    @echo ' '

# Other Targets
clean:
    -$(RM) $(OBJS)$(C_DEPS)$(ASM_DEPS)$(ELFS)$(LSS)$(AVRDUDEDUMMY)$(S_DEPS)$(SIZEDUMMY)$(S_UPPER_DEPS) FatFstest.elf
    -@echo ' '

secondary-outputs: $(LSS) $(SIZEDUMMY) $(AVRDUDEDUMMY)

.PHONY: all clean dependents
.SECONDARY:

-include ../makefile.targets

main.c

#include <diskio.h>
#include <ff.h>
#include <stdio.h>
 int main(void)
 {
   printf("hello world\n");
   return 0;
 }

subdir.mk

################################################################################
# Automatically-generated file. Do not edit!
################################################################################

# Add inputs and outputs from these tool invocations to the build variables 
C_SRCS += \
../src/diskio.c \
../src/ff.c \
../src/main.c 

OBJS += \
./src/diskio.o \
./src/ff.o \
./src/main.o 

C_DEPS += \
./src/diskio.d \
./src/ff.d \
./src/main.d 


# Each subdirectory must supply rules for building sources it contributes
src/%.o: ../src/%.c
    @echo 'Building file: $<'
    @echo 'Invoking: AVR Compiler'
    avr-gcc -I"/Users/nathannewcomb/Documents/Puzzles/FatFstest/src" -Wall -g2 -gstabs -O0 -fpack-struct -fshort-enums -std=gnu99 -funsigned-char -funsigned-bitfields -mmcu=atmega328p -DF_CPU=1000000UL -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -c -o"$@" "$<"
    @echo 'Finished building: $<'
    @echo ' '

objects.mk

################################################################################
# Automatically-generated file. Do not edit!
################################################################################

USER_OBJS :=

LIBS :=

sources.mk

################################################################################
# Automatically-generated file. Do not edit!
################################################################################

O_SRCS := 
C_SRCS := 
S_UPPER_SRCS := 
S_SRCS := 
OBJ_SRCS := 
ASM_SRCS := 
OBJS := 
C_DEPS := 
ASM_DEPS := 
ELFS := 
LSS := 
AVRDUDEDUMMY := 
S_DEPS := 
SIZEDUMMY := 
S_UPPER_DEPS := 

# Every subdirectory with source files must be described here
SUBDIRS := \
src \

Ответы [ 4 ]

15 голосов
/ 10 июля 2013

Это тоже случилось со мной, просто переместив main.cpp в другую папку.

Я пытаюсь очистить проект, но проблема не устранена, поэтому я удалил папку Debug, перекомпилировал и все работает!

1 голос
/ 08 ноября 2011

Не помещайте main.c в каталог, поместите его в начало проекта

0 голосов
/ 17 октября 2013

затмение цитаты - http://help.eclipse.org/juno/index.jsp?topic=%2Forg.eclipse.cdt.doc.user%2Fconcepts%2Fcdt_c_makefile.htm

Q2.В моем представлении консоли указано, что правила для цели 'X' не существует.

make -k clean all make: * Нет правила, позволяющего сделать цель чистой.make: * Нет правила для цели 'all'.По умолчанию программа make ищет файл, который чаще всего называется «Makefile» или «makefile».Если он не может найти такой файл в рабочем каталоге или если этот файл пуст или файл не содержит правил для целей командной строки (в данном случае «clean» и «all»), он обычно завершится с ошибкойсообщение, похожее на отображаемое.

Если у вас уже есть действительный Makefile, вам может потребоваться изменить рабочий каталог вашей сборки.Рабочим каталогом по умолчанию для команды build является корневой каталог проекта.Вы можете изменить это, указав альтернативный каталог сборки в свойствах Make Project.Или, если ваш Makefile назван как-то иначе (например, buildFile.mk), вы можете указать имя, установив для команды Build по умолчанию make -f buildFile.mk.

Если у вас нет действующего Makefileсоздайте новый файл с именем Makefile в корневом каталоге.Затем вы можете добавить содержимое примера Makefile (см. Выше) и изменить его соответствующим образом.

0 голосов
/ 11 августа 2011

Я добавил папку src моего проекта в свой список каталогов в Свойства> Компилятор AVR> Каталоги

Удалите эту папку /Users/nathannewcomb/Documents/Puzzles/FatFstest/src и попробуйте снова скомпилировать.

В файле subdir.mk строка:

avr-gcc -I"/Users/nathannewcomb/Documents/Puzzles/FatFstest/src" -Wall -g2 -gstabs -O0 -fpack-struct -fshort-enums -std=gnu99 -funsigned-char -funsigned-bitfields -mmcu=atmega328p -DF_CPU=1000000UL -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -c -o"$@" "$<"

должна стать:

avr-gcc -Wall -g2 -gstabs -O0 -fpack-struct -fshort-enums -std=gnu99 -funsigned-char -funsigned-bitfields -mmcu=atmega328p -DF_CPU=1000000UL -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -c -o"$@" "$<"

Эта папка src уже добавлена ​​в файл source.mk:

# Every subdirectory with source files must be described here
SUBDIRS := \
src \
...