Re: [問題] makefile 引入問題

作者: Gold740716 (項為之強)   2020-04-08 14:29:51
想到一個解法,
在 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,上網查了一下
: 使用
:
作者: j5128709 (j5128709)   2020-04-09 21:36:00
感謝!gold大

Links booklink

Contact Us: admin [ a t ] ucptt.com