<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: Compling Cpp files with C file in LPC Microcontrollers</title>
    <link>https://community.nxp.com/t5/LPC-Microcontrollers/Compling-Cpp-files-with-C-file/m-p/523505#M6141</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by TheFallGuy on Mon Dec 02 03:03:05 MST 2013&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;There is (at least one) bug in your makefile:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD bgcolor="#cacaca"&gt; &lt;PRE&gt;
%elf: $(OBJS)
$(CC) $(CPP) $(OBJS) $(LDFLAGS) $(LIBS) -o $@
&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;This is running the C compiler with the C++ compiler as the first parameter...&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 15 Jun 2016 18:00:52 GMT</pubDate>
    <dc:creator>lpcware</dc:creator>
    <dc:date>2016-06-15T18:00:52Z</dc:date>
    <item>
      <title>Compling Cpp files with C file</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/Compling-Cpp-files-with-C-file/m-p/523504#M6140</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by amlwwalker on Sun Dec 01 07:35:54 MST 2013&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Hi,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Everything works nicely at the moment with everything as a .c and a .h file.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I want to write some classes to handle some of my code. For instance uart control. I have been learning about editing makefiles, and I think I have edited my makefile reasonably correctly, see below:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD bgcolor="#cacaca"&gt; &lt;PRE&gt;
#
#&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; !!!! Do NOT edit this makefile with an editor which replace tabs by spaces !!!!&amp;nbsp;&amp;nbsp;&amp;nbsp; 
#
##############################################################################################
# 
# On command line:
#
# make all = Create project
#
# make clean = Clean project files.
#
# To rebuild project do "make clean" and "make all".
#

##############################################################################################
# Start of default section
#

TRGT = arm-none-eabi-
CC&amp;nbsp;&amp;nbsp; = $(TRGT)gcc
CPP&amp;nbsp;&amp;nbsp; = $(TRGT)g++
CP&amp;nbsp;&amp;nbsp; = $(TRGT)objcopy
AS&amp;nbsp;&amp;nbsp; = $(TRGT)gcc -x assembler-with-cpp
HEX&amp;nbsp; = $(CP) -O ihex
BIN&amp;nbsp; = $(CP) -O binary

MCU&amp;nbsp; = cortex-m3

# List all default C defines here, like -D_DEBUG=1
DDEFS =

# List all default ASM defines here, like -D_DEBUG=1
DADEFS = 

# List all default directories to look for include files here
DINCDIR = 

# List the default directory to look for the libraries here
DLIBDIR =

# List all default libraries here
DLIBS = 

#
# End of default section
##############################################################################################

##############################################################################################
# Start of user section
#

# 
# Define project name and Ram/Flash mode here
PROJECT&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = Keyboard
RUN_FROM_FLASH = 1

#
# Define linker script file here
#
ifeq ($(RUN_FROM_FLASH), 0)
LDSCRIPT = ./prj/lpc1788_ram.ld
FULL_PRJ = $(PROJECT)_ram
else
LDSCRIPT = ./prj/lpc1788_flash.ld
FULL_PRJ = $(PROJECT)
endif

# List all user C define here, like -D_DEBUG=1
UDEFS = 

# Define ASM defines here
UADEFS = 

# List C source files here
SRC&amp;nbsp; = ./cmsis/core/core_cm3.c \
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ./cmsis/device/NXP/LPC177x_8x/system_LPC177x_8x.c \
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $(wildcard ./src/*.c) \
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $(wildcard ./src/*.cpp) \
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $(wildcard ./drivers/source/*.c) 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # ./src/crt.c \
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #./src/SDRAM.c \
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #./src/GLCD.c \
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #./src/stubs.c \
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #./src/util.c \
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #./src/vectors_lpc1768.c \
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #./src/main.c \
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #./src/peripherals.c \
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 

# List ASM source files here
Asrc=# List all user directories here
UINCDIR = ./inc \
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ./hardware\
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ./drivers/include \
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ./cmsis/core \
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ./cmsis/device/NXP/LPC177x_8x \

# List the user directory to look for the libraries here
ULIBDIR =

# List all user libraries here
ULIBS = 

# Define optimisation level here
OPT = -O0

#
# End of user defines
##############################################################################################


INCDIR&amp;nbsp; = $(patsubst %,-I%,$(DINCDIR) $(UINCDIR))
LIBDIR&amp;nbsp; = $(patsubst %,-L%,$(DLIBDIR) $(ULIBDIR))

ifeq ($(RUN_FROM_FLASH), 0)
DEFS&amp;nbsp;&amp;nbsp;&amp;nbsp; = $(DDEFS) $(UDEFS) -DRUN_FROM_FLASH=0 -D__RAM_MODE__
else
DEFS&amp;nbsp;&amp;nbsp;&amp;nbsp; = $(DDEFS) $(UDEFS) -DRUN_FROM_FLASH=1
endif

ADEFS&amp;nbsp;&amp;nbsp; = $(DADEFS) $(UADEFS)
OBJS&amp;nbsp;&amp;nbsp;&amp;nbsp; = $(ASRC:.s=.o) $(SRC:.c=.o) $(SRC:.cpp=.o)
LIBS&amp;nbsp;&amp;nbsp;&amp;nbsp; = $(DLIBS) $(ULIBS)
MCFLAGS = -mcpu=$(MCU)

ASFLAGS = $(MCFLAGS) -g -gdwarf-2 -Wa,-amhls=$(&amp;lt;:.s=.lst) $(ADEFS)
CPFLAGS = $(MCFLAGS) $(OPT) -gdwarf-2 -mthumb -fomit-frame-pointer -Wall -Wstrict-prototypes -fverbose-asm -Wa,-ahlms=$(&amp;lt;:.c=.lst) $(DEFS)
CPPFLAGS = $(MCFLAGS) $(OPT) -gdwarf-2 -mthumb -fomit-frame-pointer -Wall -Wstrict-prototypes -fverbose-asm -Wa,-ahlms=$(&amp;lt;:.cpp=.lst) $(DEFS)
LDFLAGS = $(MCFLAGS) -mthumb -nostartfiles -T$(LDSCRIPT) -Wl,-Map=$(FULL_PRJ).map,--cref,--no-warn-mismatch $(LIBDIR)

# Generate dependency information
CPFLAGS += -MD -MP -MF .dep/$(@F).d
CPPFLAGS += -MD -MP -MF .dep/$(@F).d
#
# makefile rules
#

ifeq ($(RUN_FROM_FLASH), 0)
all: $(OBJS) $(FULL_PRJ).elf $(FULL_PRJ).hex
 $(MAKE) post-build
else
all: $(OBJS) $(FULL_PRJ).elf $(FULL_PRJ).hex $(FULL_PRJ).bin
 $(MAKE) post-build
endif


%.o : %.c
$(CC) -c $(CPFLAGS) -I . $(INCDIR) $&amp;lt; -o $@

%.o : %.cpp
$(CPP) -c $(CPPFLAGS) -I . $(INCDIR) $&amp;lt; -o $@

%.o : %.s
$(AS) -c $(ASFLAGS) $&amp;lt; -o $@

%elf: $(OBJS)
$(CC) $(CPP) $(OBJS) $(LDFLAGS) $(LIBS) -o $@
&amp;nbsp; 
%hex: %elf
$(HEX) $&amp;lt; $@

%bin: %elf
$(BIN) $&amp;lt; $@

clean:
-rm -f $(OBJS)
-rm -f $(FULL_PRJ).elf
-rm -f $(FULL_PRJ).map
-rm -f $(FULL_PRJ).hex
-rm -f $(FULL_PRJ).bin
-rm -f $(SRC:.c=.c.bak)
-rm -f $(SRC:.c=.lst)
-rm -f $(ASRC:.s=.s.bak)
-rm -f $(ASRC:.s=.lst)
-rm -fR .dep

post-build:
-@echo 'ARM Size statistics follow.'
-arm-none-eabi-size $(FULL_PRJ).elf
-@echo ' '

# 
# Include the dependency files, should be the last of the makefile
#
-include $(shell mkdir .dep 2&amp;gt;/dev/null) $(wildcard .dep/*)

# *** EOF ***

&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;The only place I haven't successfully put the cpp control is in the "clean". As it was causing some problems. Beside, I haven't got it compiling yet.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;When I build I get the error:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;HR /&gt;&lt;SPAN style="color: #0000ff;"&gt;&lt;STRONG&gt;Quote: &lt;/STRONG&gt;&lt;BR /&gt;&lt;BR /&gt;arm-none-eabi-gcc: error: arm-none-eabi-g++: No such file or directory&lt;BR /&gt;make: *** [Keyboard.elf] Error 1&lt;BR /&gt;&lt;/SPAN&gt;&lt;HR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;It seems interesting to me that this is a arm-none-eabi-&lt;/SPAN&gt;&lt;STRONG&gt;gcc&lt;/STRONG&gt;&lt;SPAN&gt; issue which suggests I actaully havent set up for C++ files correctly.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Once I have done that I will need to make main.c a main.cpp file. &lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 18:00:51 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/Compling-Cpp-files-with-C-file/m-p/523504#M6140</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T18:00:51Z</dc:date>
    </item>
    <item>
      <title>Re: Compling Cpp files with C file</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/Compling-Cpp-files-with-C-file/m-p/523505#M6141</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by TheFallGuy on Mon Dec 02 03:03:05 MST 2013&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;There is (at least one) bug in your makefile:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD bgcolor="#cacaca"&gt; &lt;PRE&gt;
%elf: $(OBJS)
$(CC) $(CPP) $(OBJS) $(LDFLAGS) $(LIBS) -o $@
&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;This is running the C compiler with the C++ compiler as the first parameter...&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 18:00:52 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/Compling-Cpp-files-with-C-file/m-p/523505#M6141</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T18:00:52Z</dc:date>
    </item>
  </channel>
</rss>

