[問題] Makefile 一次編譯多個執行檔

作者: gigigigi (gigigigi)   2016-05-09 18:46:06
ARM_CC = arm-linux-gnueabi-gcc
CC = gcc
CXX = g++
LDFLAGS = -lm
CFLAGS = -Wall -pedantic -ggdb3 -O0 -std=c99
0505_OBJS = 0505.o
IFBP_OBJS = IFBP.o
all: 0505 IFBP
0505: ${0505_OBJS}
${CXX} -o $@ $? ${LDFLAGS} ${CFLAGS}
IFBP: ${IFBP_OBJS}
${CXX} -o $@ $? ${LDFLAGS} ${CFLAGS}
clean:
rm -f *.o 0505 IFBP
可以編譯過程被拆成兩步驟
g++ -c -o 0505.o 0505.cpp
g++ -o 0505 0505.o -lm -Wall -pedantic -ggdb3 -O0 -std=c99
g++ -c -o IFBP.o IFBP.cpp
g++ -o IFBP IFBP.o -lm -Wall -pedantic -ggdb3 -O0 -std=c99
但是像
g++ -c -o 0505.o 0505.cpp
這邊編譯出來的 0505.o 這時候沒有帶 -g 參數沒debug symbol 無法用gdb
想請問一下要怎麼在這步驟加上-g ?
還有為什麼會被拆成兩步驟編譯?
謝謝
作者: tjjh89017 (伊達政宗)   2016-05-09 19:17:00
.c.o:${CXX} -c ${CFLAGS} $*.cpp.c.o 改成 .cpp.o
作者: yvb   2016-05-09 22:29:00
應該是改定義 CXXFLAGS (或 CPPFLAGS 亦可).
作者: Bencrie   2016-05-09 23:43:00
%.o: %.cpp$CXX -c $< -o $@ $CXXFLAGS
作者: wens (文思)   2016-05-10 09:59:00
上面提到的都是內建rule了,加 CXXFLAGS 就好CFLAGS 是編譯 C 原始檔用, CXXFLAGS 是 C++ 用CPPFLAGS 是給 preprocessor 的參數 (如 -I -D 這類的)

Links booklink

Contact Us: admin [ a t ] ucptt.com