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

看板LinuxDev作者 (gigigigi)時間9年前 (2016/05/09 18:46), 編輯推噓2(207)
留言9則, 4人參與, 最新討論串1/1
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 ? 還有為什麼會被拆成兩步驟編譯? 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 175.180.117.99 ※ 文章網址: https://www.ptt.cc/bbs/LinuxDev/M.1462790768.A.C70.html

05/09 19:17, , 1F
.c.o:
05/09 19:17, 1F

05/09 19:17, , 2F
${CXX} -c ${CFLAGS} $*.cpp
05/09 19:17, 2F

05/09 19:17, , 3F
.c.o 改成 .cpp.o
05/09 19:17, 3F

05/09 22:29, , 4F
應該是改定義 CXXFLAGS (或 CPPFLAGS 亦可).
05/09 22:29, 4F

05/09 23:43, , 5F
%.o: %.cpp
05/09 23:43, 5F

05/09 23:43, , 6F
$CXX -c $< -o $@ $CXXFLAGS
05/09 23:43, 6F

05/10 09:59, , 7F
上面提到的都是內建rule了,加 CXXFLAGS 就好
05/10 09:59, 7F

05/10 09:59, , 8F
CFLAGS 是編譯 C 原始檔用, CXXFLAGS 是 C++ 用
05/10 09:59, 8F

05/10 10:00, , 9F
CPPFLAGS 是給 preprocessor 的參數 (如 -I -D 這類的)
05/10 10:00, 9F
文章代碼(AID): #1NC6fmnm (LinuxDev)
文章代碼(AID): #1NC6fmnm (LinuxDev)