Makefile 變數替換
Makefile
SUBDIRS = xxx aaa
BUILDSUBDIRS = $(SUBDIRS:%=build-%)
CLEANSUBDIRS = $(SUBDIRS:%=clean-%)
.PHONY: all clean
all: $(BUILDSUBDIRS)
$(BUILDSUBDIRS):
@echo "<===" $@
make -C $(@:build-%=%)
@echo ">===" $@
@echo "\n"
clean: $(CLEANSUBDIRS)
$(CLEANSUBDIRS):
@echo "<===" $@
make -C $(@:clean-%=%) clean
@echo "===>" $@
@echo "\n"
================================================
CLEANSUBDIRS = $(SUBDIRS:%=clean-%):
SUBDIRS 變數裡的元素,
若有符合 % pattern,(%是萬用字元,也可代表很多字)
則使用 clean-% 這個 pattern 送元素出去。
make -C $(@:clean-%=%) clean :
$@ 是代表 target,
$@ = $(@),
(@:clean-%=%) 是說 target 裡的元素,
若符合 clean-% 的 pattern,
則使用 % 這個 pattern 送元素出去
================================================
在 command line 執行
$ make
此指令是 build first target,
在 此例就是 all,
若 all 和 clean target 對換,
$ make
就是執行 make clean,
並不是 make 就是一定 build all
reference:
http://vincentlogistics.blogspot.com/2014/05/makefile-recursive-make.html
http://lackof.org/taggart/hacking/make-example/
https://blog.csdn.net/a827415225/article/details/73414696
https://www.cnblogs.com/wang_yb/p/3990952.html
Makefile 變數替換的更多相关文章
- t100 常用公用變數
g_enterprise 目前的企業代碼,將限制使用者所能閱讀的資料內容g_prog 目前執行的作業編號,用於變換畫面顯示資料與產生系統資訊,不可變更g_code 目前執行的程式代碼(4gl)名稱,不 ...
- keil c51 本變數型態(Variable Type)
本變數型態(Variable Type): 類 別 符號位元 位元組(bytes) 表 示 法 數 值 範 圍 整 數 有 2 int(short) -32768~0~>32767 4 long ...
- (Lua) C++ 呼叫 Lua 的變數、函式
簡單的在C++裡頭與Lua交互操作 首先提供 Lua 的簡單範例 print(" Lua 2019/01/07 !!!") -- Variable monster_type = & ...
- x86 下的 struct 變數 member 擺放位置
2 int main() 3 { 4 struct _test { 5 int a; 6 int b; 7 int c; 8 }; 9 10 struct _test test; 11 test.a ...
- shell 變數
echo $? 上个命令的退出状态,或函数的返回值. ref: http://c.biancheng.net/cpp/view/2739.html
- 鸟哥的linux私房菜---非常好的linux基础网址【转】
转自:http://linux.vbird.org/linux_basic/0320bash.php 在 Linux 的環境下,如果你不懂 bash 是什麼,那麼其他的東西就不用學了!因為前面幾章我們 ...
- shell学习笔记
shell学习笔记 .查看/etc/shells,看看有几个可用的Shell . 曾经用过的命令存在.bash_history中,但是~/.bash_history记录的是前一次登录前记录的所有指令, ...
- 介紹 IIS 8 全新的 HttpPlatformHandler 模組與 ASP.NET 5 Beta8 重大變更
HttpPlatformHandler 是一個支援 IIS 8 與 IIS 8.5 的原生模組 (native module),主要使用於 Microsoft Azure Websites 網站服務中 ...
- [亂數] <細說> C/C++ 亂數基本使用與常見問題
陸陸續續寫了 EA 一.二年,以前亂數引導文回頭看時才發現,怎麼有這麼多細節的錯誤.沒系統. 這篇文章主要引導初學者使用亂數,同時附上常被翻出來討論的議題,C/C++適用,唯以 C 語言撰之. 也由 ...
随机推荐
- 自动化测试元素查找利器firepath介绍
自动化测试查找元素和确定元素xpath路径是否正确在业界有个很好的工具就是firefox 浏览器的 firepath 问题: firefox 最新版本已经不支持firebug和firepath这两个插 ...
- selenide 自动化UI测试中Configuration全局配置项目
selenide 在测试过程中需要设置许多的默认值,方便在测试过程中进行和很好的使用.下面我们在selenide中的api引用过来看看! static Configuration.AssertionM ...
- 01-Mysql数据库----前戏
MySql的前戏 在学习Mysql之前,我们先来想一下一开始做的登录注册案例,当时我们把用户的信息保存到一个文件中: #用户名 |密码root|123321 alex|123123 上面文件内容的规则 ...
- The Erdös-Straus Conjecture 题解
题面 Description The Brocard Erdös-Straus conjecture is that for any integern > 2 , there are posit ...
- Spark实战练习03--Pair RDD
一.场景 现有某网站的网站日志,内容为用户对网站的请求,包含user ID.IP address.datetime……等等 另有一份文件中包含用户的账户详细信息数据,包含User ID.creatio ...
- vue2.0介绍
1.vue.js 是什么 vue(view)是一套构建用户界面的渐进式框架 Vue (pronounced /vjuː/, like view) is a progressive framework ...
- Promise使用手册
导读 Promise问世已久, 其科普类文章亦不计其数. 遂本篇初衷不为科普, 只为能够温故而知新. 比如说, catch能捕获所有的错误吗? 为什么有些时候会抛出"Uncaught (in ...
- 基于网络的 Red Hat 无人值守安装
基于网络的 Red Hat 无人值守安装 本文介绍了 PC 平台上的一种快速 Red Hat Linux 安装方案.它具有很高的自动化程度--用户只需手工启动机器并选择从网络启动,就可以完成整个安装过 ...
- Struts1防止表单重复提交
package org.zln.struts.action; import org.apache.struts.action.Action; import org.apache.struts.acti ...
- servletContex.getRealPath 获取的是拼接后的地址 是虚假的
servletContex.getRealPath 获取的是拼接后的地址 是虚假的