makefile aus Eclipse CDT abändern

07/07/2008 - 20:06 von simowil | Report spam
Guten Tag,

Ich möchte gerne das automatisch generierte makefile aus Eclipse CDT
abàndern. Durch CDT wird ein makefile, objects.mk, subdir.mk und ein
objects.mk File generiert. Ich möchte alles in ein einziges File:
makefile packen. Auch wird durch CDT ein Ordner angelegt und die
Referenzen der *.c und *.h ist auf dem übergeordneten Ordner. Ich
möchte, dass das makefile aus dem gleichen Ordner wo die Source
Dateien sind ausführen können.

Also, das CDT makefile sieht folgendermassen aus:

################################################################################
# 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 objects.mk

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

-include ../makefile.defs

# Add inputs and outputs from these tool invocations to the build
variables

# All Target
all: bachelor

# Tool invocations
bachelor: $(OBJS) $(USER_OBJS)
@echo 'Building target: $@'
@echo 'Invoking: MacOS X C Linker'
gcc -L/opt/local/lib -lNetpbm -o "bachelor" $(OBJS) $(USER_OBJS) $
(LIBS)
@echo 'Finished building target: $@'
@echo ' '

# Other Targets
clean:
-$(RM) $(OBJS)$(EXECUTABLES)$(C_DEPS) bachelor
-@echo ' '

.PHONY: all clean dependents
.SECONDARY:

-include ../makefile.targets


-

Das subdir.mk File enthàlt:

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

# Add inputs and outputs from these tool invocations to the build
variables
C_SRCS += \
../canny.c \
../starter.c \
../tracing.c

OBJS += \
./canny.o \
./starter.o \
./tracing.o

C_DEPS += \
./canny.d \
./starter.d \
./tracing.d


# Each subdirectory must supply rules for building sources it
contributes
%.o: ../%.c
@echo 'Building file: $<'
@echo 'Invoking: GCC C Compiler'
gcc -I/opt/local/include -O3 -c -fmessage-length=0 -MMD -MP -MF"$(@:
%.o=%.d)" -MT"$(@:%.o=%.d)" -o"$@" "$<"
@echo 'Finished building: $<'
@echo ' '


-

Die anderen beiden Files, objects.mk und sources.mk enthalten keine
Zuweisungen.

Ich konnte alles soweit abàndern, dass ich nur noch ein makefile habe,
das sieht dann folgendermassen aus:

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

-include ../makefile.init

RM := rm -rf

# All of the sources participating in the build are defined here
# Add inputs and outputs from these tool invocations to the build
variables
C_SRCS += \
../canny.c \
../starter.c \
../tracing.c

OBJS += \
./canny.o \
./starter.o \
./tracing.o

C_DEPS += \
./canny.d \
./starter.d \
./tracing.d


# Each subdirectory must supply rules for building sources it
contributes
%.o: ../%.c
@echo 'Building file: $<'
@echo 'Invoking: GCC C Compiler'
gcc -I/opt/local/include -O3 -c -fmessage-length=0 -MMD -MP -MF"$(@:
%.o=%.d)" -MT"$(@:%.o=%.d)" -o"$@" "$<"
@echo 'Finished building: $<'
@echo ' '



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

-include ../makefile.defs

# Add inputs and outputs from these tool invocations to the build
variables

# All Target
all: cannyandtracing

# Tool invocations
cannyandtracing: $(OBJS) $(USER_OBJS)
@echo 'Building target: $@'
@echo 'Invoking: MacOS X C Linker'
gcc -L/opt/local/lib -lNetpbm -o "cannyandtracing" $(OBJS) $
(USER_OBJS) $(LIBS)
@echo 'Finished building target: $@'
@echo ' '

# Other Targets
clean:
-$(RM) $(OBJS)$(EXECUTABLES)$(C_DEPS) cannyandtracing
-@echo ' '

.PHONY: all clean dependents
.SECONDARY:

-include ../makefile.targets



Das kompilieren klappt soweit gut. Allerdings nur wenn sich das
makefile in einem Ordner 'unter' den Resourcen befindet. Wie klappt
es, dass ich ein make im gleichen Ordner ausführen kann?

Ich ging davon aus die Source Referenzen wie ../canny.c \ müssen auf ./
canny.c abgeàndert werden. Dies funktioniert allerdings nicht.

Bin dankbar für jede Hilfe.
 

Lesen sie die antworten

#1 simowil
08/07/2008 - 14:27 | Warnen spam
.. hat sich inzwischen erledigt:

RM := rm -rf

# Add inputs and outputs from these tool invocations to the build
variables
C_SRCS = \
./canny.c \
./starter.c \
./tracing.c

OBJS = \
./canny.o \
./starter.o \
./tracing.o

C_DEPS = \
./canny.d \
./starter.d \
./tracing.d


# Each subdirectory must supply rules for building sources it
contributes
%.o: %.c
gcc -I/opt/local/include -O3 -c -fmessage-length=0 -MMD -MP -MF"$(@:
%.o=%.d)" -MT"$(@:%.o=%.d)" -o"$@" "$<"


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


# All Target
all: cannyandtracing

# Tool invocations
cannyandtracing: $(OBJS)
@echo 'Building target: $@'
gcc -L/opt/local/lib -lNetpbm -o "cannyandtracing" $(OBJS)
@echo 'Finished building target: $@'
' '

# Other Targets
clean:
-$(RM) $(OBJS)$(EXECUTABLES)$(C_DEPS) cannyandtracing
' '

Ähnliche fragen