makefile 引入問題 - Linux

Table of Contents

小弟最近剛入門Linux
想嘗試一些階層式makefile管理
踢到鐵板...來問兩個蠢問題

環境: ubuntu 16.04

架構:

/home/xx/main
- main.c
- makefile

/home/xx/plus
- plus.c
- plus.mk


makefile內容為: plus.mk:

1: OBJ_C = main.c $(OBJ_C) += plus.c
2:
3: include plus.mk
4:
5: out: $(OBJ_C)
6: @echo $(OBJ_C)
7: gcc -c $^


make下去後,會說找不到 plus.mk,上網查了一下
使用
--include-dir=../plus or -I../plus
--include-dir=/home/xx/plus or -I/home/xx/plus
(上述的指令我都寫在 include plus.mk上面)

上述四種都會失敗,目前成功的是
直接在第3行 暴力寫出"include ../plus/plus.mk"

Q1:想把路徑拉出來,讓第3行乾淨的 include xx.mk
我指令使用錯嗎?

Q2:我假如成功引用plus.mk後
但是我的第6行 顯示$(OBJ_C)這個變數時,只有main.c
我想問說,如何讓plus.c 附加上去?

謝謝各位高手們...

看完小弟愚蠢的問題

--

All Comments

Emma avatarEmma2020-04-08
plus.mk 應該是 OBJ_C += plus.c 吧
Rosalind avatarRosalind2020-04-08
怕展開時間點不對就 OBJ_C:=$(OBJ_C) plus.c
Valerie avatarValerie2020-04-11
你是打 make -I../plus 嗎?
Carolina Franco avatarCarolina Franco2020-04-16
感謝Ben大解惑Q2, @gold大 我犯蠢了,我是在內容裡加上
Thomas avatarThomas2020-04-16
-I
Elma avatarElma2020-04-17
那有方法再內容新增路徑,而不是在輸入make時加入呢?
我目前成功有 vpath, 還有其他方法嘛? 再次感謝兩
Steve avatarSteve2020-04-21
翻一翻 make 的內建變數能不能控制 -I 吧
不然就直接寫 include ../plus/plus.mk
Yuri avatarYuri2020-04-26
試試看 .INCLUDE_DIRS = ../plus
Valerie avatarValerie2020-04-26
好像沒用,這個變數似乎是用來讀取的