makefile 引入問題 - Linux

Tom avatar
By Tom
at 2020-04-08T14:29

Table of Contents

想到一個解法,
在 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 附加上去?
: 謝謝各位高手們...
: 看完小弟愚蠢的問題

--
這個社會一直在談家庭、教育,以及工作間的平衡,我辭職之後回家帶小孩,
我沒想到這個社會是如此的不安全。

我真的很希望政府、各級單位,能夠做些事情讓媽媽放心帶小孩,
或者是讓媽媽放心工作

--
Tags: Linux

All Comments

Iris avatar
By Iris
at 2020-04-12T20:44
感謝!gold大

ext3 檔案大小上限只有 20G

Charlotte avatar
By Charlotte
at 2020-04-08T11:36
在 8T 的外接硬碟 (My Book) 上格式化了 ext3 , 但不知道是什麼原因,檔案大小上限只能到 20G 。 truncate -s 19G 還能成功, 20G 就會報錯了。 google 到的說法, 如果 block size 是 4k ,那上限應該是 16T , 用 tune2fs 列出的 b ...

makefile 引入問題

Ingrid avatar
By Ingrid
at 2020-04-07T23:27
小弟最近剛入門Linux 想嘗試一些階層式makefile管理 踢到鐵板...來問兩個蠢問題 環境: ubuntu 16.04 架構: /home/xx/main - main.c - makefile /home/xx/plus - plus.c - plus.mk makefi ...

樹莓派3 的vnc無法連線

James avatar
By James
at 2020-04-06T00:47
如題 試過以下指令! https://i.imgur.com/QWKN00x.jpg 也用rasp-config 要啟動 vnc 結果跳出下圖錯誤 https://i.imgur.com/IktXrtU.jpg 拜託 大神救我 幾天前明明還好好的... - ...

spyder開啟問題

Mary avatar
By Mary
at 2020-04-04T13:11
請問Ubuntu server 是不是無法開啟anaconda裡的spyder? 試了兩個ubuntu server都遇到同樣的問題 但其他圖形化介面卻能夠用遠端開啟 我也有裝Ubuntu桌面版 遠端的話卻可以遠端開啟圖形化spyder介面 所以想問是不是因為server版的問題? https://i.i ...

ubuntu強制關機快十次。

Emily avatar
By Emily
at 2020-04-03T18:04
如題,今天在用ubuntu的時候電腦突然死當,強制關機以後再次開機,用chrome的時候又是 死當,後來再開機就開不了了。 顯示一行指令碼似乎是說有個log損毀之類的。 試著用recovery mode也是無法,用舊的kernel再開了一次recovery mode,輸入disk的密碼 以後就陷入黑屏,可以 ...