Makefile 定義函式 foreach

2021-09-29 04:32:22 字數 1511 閱讀 4482

makefile 自定義函式 和 foreach的使用。

makefile 定義函式來實現這個改造

函式格式

define external_tar

...endef

呼叫deps: $(call external_tar)

因為需要遞迴解壓包,使用了foreach(裡面的是臨時變數)進行遍歷:

**

external_json=external/cjson/

external_zlib=external/zlib/

external_sqlite=external/sqlite/

external_openssl=external/openssl/

external_libyaml=external/libyaml/

external_curl=external/curl/

external_audit=external/audit-userspace/

external_libffi=external/libffi/

external_cpython=external/cpython/

external_msgpack=external/msgpack/

external_procps=external/procps/

external_libdb=external/libdb/build_unix/

external_db=external/libdb/

tar := tar -zxf

external_res := cjson $(cpython) curl libdb libffi libyaml openssl procps sqlite zlib audit-userspace msgpack

define external_tar

$(foreach n, $(external_res), $(tar) external/$(n).tar.gz -c external; )

endef

deps:

ifeq ($(wildcard external/*/*),)

$(call external_tar)

endif

clean-deps-libs:

rm -rf $(external_zlib) $(external_json) $ $ $ $ $(external_sqlite) $ $ $(external_msgpack) $ $

**目錄結構

makefile 增加巨集定義

0.前言 從學習c語言開始就慢慢開始接觸makefile,查閱了很多的makefile的資料但總感覺沒有真正掌握makefile,如果自己動手寫乙個makefile總覺得非常吃力。所以特意借助部落格總結makefile的相關知識,通過例子說明makefile的具體用法。例說makefile索引博文 ...

Makefile進行巨集定義

實際上是gcc命令支援 d巨集定義,相當於c中的全域性 define gcc d name gcc d name definition makefile中可以定義變數 和巨集很像 但是是給make直譯器用的,對所編譯的檔案完全沒有作用。在makefile中我們可以通過巨集定義來控制源程式的編譯。只要...

makefile變數的定義

一 變數名 makefile變數名是不包括 前置空白和尾空白的任何字串。1 變數名最好由字母 數字和下劃線組成 儘管在gnu make中沒有對變數的命名有其它的限制,但是字母 數字和下劃線以外的字元 可能會在make的後續版本中被賦予特殊的含義。2 變數名大小寫敏感 3 變數名中可以包含函式或者其它...