Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > code::blocks настройка


Автор: sunnmas 20.4.2009, 14:51
Програмирую под контроллеры arm. Перешел на среду code::blocks. Есть готовый мэйк файл который можно использовать. Как указать среде на него? 

Либо как отассемблировать файл, написанный на ассемблере и слинковать со всем остальным (скомпилировать то на g++ получается). Просто у меня код стартапа написан на ассемблере. Вот мой мэйк (на всякий случай): 

TRGT = arm-elf-
CPP  = $(TRGT)g++
CC   = $(TRGT)gcc
LD   = $(TRGT)ld
AS   = $(TRGT)as
OC   = $(TRGT)objcopy
SZ   = $(TRGT)size

MCU  = arm7tdmi
PROJECT = mit

LDSCRIPT  = AT91SAM7S64-ROM.ld
source_dirs = source
out_dir = out

#флаги g++
CPPFLAGS = -c  -g -O0 #-fexpensive-optimizations
#флаги gcc
CCFLAGS = -c -g -MD -O0
#флаги as
ASFLAGS = -Wa -amhls=$(out_dir)/$(notdir $(<:.s=.lst)) -ahls -mapcs-32
#флаги ld
LDFLAGS = -Wl,-T$(LDSCRIPT),-Map=$(out_dir)/$(PROJECT).map,--cref,-lstdc++,-lsupc++
LDFLAGS2= -mcpu=$(MCU) -nostartfiles -T$(LDSCRIPT) -Wl,--no-warn-mismatch

#флаги objcopy
OCFLAGS = --output-target=binary


search_wildcards  := $(addsuffix /*.s,$(source_dirs)) $(addsuffix /*.cpp,$(source_dirs)) $(addsuffix /*.c,$(source_dirs)) 
VPATH := $(source_dirs)
OBJECTS = $(addprefix $(out_dir)/, $(notdir $(patsubst %.c,%.o, $(patsubst %.cpp,%.o, $(patsubst %.s,%.o, $(wildcard $(search_wildcards)))))))


all:  clean binutilsversions $(PROJECT) $(out_dir)/$(PROJECT).elf size

.PHONY: clean
    
clean:
    rm -f $(addprefix $(out_dir)/, *.d *.o *.lst *.map *.out *.bin)
    
binutilsversions: 
    @echo ===================================================================
    @$(CPP) --version
    @echo ===================================================================
    @$(CC) --version
    @echo ===================================================================
    @$(AS) --version
    @echo ===================================================================
    @$(LD) --version
    @echo ===================================================================
    @echo    

$(out_dir)/$(PROJECT).elf: $(OBJECTS)
    $(CPP) $(OBJECTS) $(LDFLAGS2) -o $@

$(PROJECT): $(out_dir)/$(PROJECT).out
    $(OC) $(OCFLAGS) $< $(out_dir)/$(PROJECT).bin    

#линковка
$(out_dir)/$(PROJECT).out: $(OBJECTS)
    $(CPP) $(LDFLAGS) $^ -o $@
#$(LD) $(LDFLAGS) $^ -o $@
    
#компиляция
$(addprefix $(out_dir)/,%.o): %.c
    $(CC) $(CCFLAGS) $< -o $@

$(addprefix $(out_dir)/,%.o): %.cpp
    $(CPP) $(CPPFLAGS) $< -W -o $@
    
#асемблирование
$(addprefix $(out_dir)/,%.o): %.s
    $(AS) $(ASFLAGS) $< -o $@
           
size: $(out_dir)/$(PROJECT).out
    $(SZ) $<

include $(wildcard *.d)    

Автор: korbian 22.4.2009, 09:21
для задействования существующего make файла, нужно сделать следующие:
  • project->properties->project settings: makefile [указать имя твоего makefile]; отметить флажок this is a custom Makefile;
  • project->build otions->"make" commands. прописать нужные тебе флаги для make.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)