Re: [問題] makefile 引入問題

看板Linux作者 (項為之強)時間5年前 (2020/04/08 14:29), 5年前編輯推噓0(001)
留言1則, 1人參與, 5年前最新討論串2/2 (看更多)
想到一個解法, 在 makefile 裡再啟動一個帶 -I ../plus 參數的 make 。 雖然有點智障,但也想不到更好的解法。 範例程式如下: ``` OBJ_C := foo ifeq (,$(findstring ../plus,$(.INCLUDE_DIRS))) target := include-plus else include plus.mk target := out endif target: $(target) include-plus: $(MAKE) -I ../plus $(MAKECMDGOALS) out: $(OBJ_C) @echo $(OBJ_C) gcc -c $^ .PHONY: target include-plus out ``` 其中八個空格是 tab 。 大概就是如果 include 路徑沒有 ../plus 的話, 就新開一個帶 -I ../plus 的 make , 並在該 make 裡再正式編譯。 我對 make 沒有像 port 那麼熟, 所以有些寫法可能不是很優雅。 另外你的 out 目標看起來也是偽目標, 所以幫你加在 .PHONY 裡。 ※ 引述《j5128709 (j5128709)》之銘言: : 小弟最近剛入門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 附加上去? : 謝謝各位高手們... : 看完小弟愚蠢的問題 -- 這個社會一直在談家庭、教育,以及工作間的平衡,我辭職之後回家帶小孩, 我沒想到這個社會是如此的不安全。 我真的很希望政府、各級單位,能夠做些事情讓媽媽放心帶小孩, 或者是讓媽媽放心工作 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.113.127.95 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Linux/M.1586327394.A.F26.html ※ 編輯: Gold740716 (140.113.127.95 臺灣), 04/08/2020 14:33:05

04/09 21:36, 5年前 , 1F
感謝!gold大
04/09 21:36, 1F
文章代碼(AID): #1UZMzYyc (Linux)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
文章代碼(AID): #1UZMzYyc (Linux)