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 變數名中可以包含函式或者其它...