⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 10.htm

📁 学习MAkefile相关的好资料
💻 HTM
📖 第 1 页 / 共 5 页
字号:
					<tr><td align="right"><a href='/user/ire_wang'>ire_wang</a>&nbsp;<font color="#FF0000">(2)</font></td></tr>
				
			</table>
		</td>
	</tr>
</table>

          </TD>
          <TD vAlign="top" width="786">
            <table width="100%" border="0" cellpadding="4">
              <tr>
                <td width="10" height="19"></td>
                <td height="19">
<table width="100%" border="0" cellspacing="3" cellpadding="3">
  <tr>
    <td>
      <a href="http://www.csdn.net/">CSDN</a> - <a href="http://dev.csdn.net/">文档中心</a>
      - <font color="#003399">
        <a id="ArticleTitle1_ArticleTitle1_hlClass" href="/articlelist.aspx?c=13">其他</a></font>
    </td>
    <TD align="right">
      阅读:<span id="ArticleTitle1_ArticleTitle1_lblReadCount">18597</span>
      &nbsp;&nbsp;评论:
      <span id="ArticleTitle1_ArticleTitle1_lblCommentCount">0</span>
      &nbsp;&nbsp; <a href="#Comment">参与评论</a>
    </TD>
  </tr>
</table>
<table width="100%" border="0" cellspacing="3" cellpadding="3" bgcolor="#eeeeee">
  <tr>
    <td width="60" height="0" nowrap></td>
    <td></td>
  </tr>
  <tr>
    <td height="16" align="center" nowrap bgcolor="#003399"><font color="#ffffff">标题</font></td>
    <td><b>&nbsp;
        <span id="ArticleTitle1_ArticleTitle1_lblTitle">跟我一起写 Makefile(十)</span></b>&nbsp;&nbsp;&nbsp;&nbsp;
        选择自 <a id="ArticleTitle1_ArticleTitle1_AuthorLink" href="/user/haoel">haoel</a> 的 Blog
    </td>
  </tr>
  <tr>
    <td height="16" align="center" bgcolor="#003399"><font color="#ffffff">关键字</font></td>
    <td width="500">&nbsp;
      <span id="ArticleTitle1_ArticleTitle1_lblKeywords">C C++ make makefile</span></td>
  </tr>
  <tr>
    <td height="16" align="center" bgcolor="#003399"><font color="#ffffff">出处</font></td>
    <td>&nbsp;
      <span id="ArticleTitle1_ArticleTitle1_lblSource"></span></td>
  </tr>
</table>
</td>
              </tr>
              <tr>
                <td width="10"></td>
                <td><span id="ArticleContent1_ArticleContent1_lblContent"><P class=MsoPlainText style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"><?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p></o:p></SPAN></P>
<H3 style="MARGIN: 13pt 0cm"><FONT size=2><SPAN style="FONT-FAMILY: 'Courier New'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">四、</SPAN><SPAN lang=EN-US>foreach </SPAN><SPAN style="FONT-FAMILY: 'Courier New'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">函数</SPAN></FONT></H3>
<P class=MsoPlainText style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"><o:p>&nbsp;</o:p></SPAN></P>
<P class=MsoPlainText style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'">foreach</SPAN><SPAN style="FONT-SIZE: 9pt; mso-ascii-font-family: 'Courier New'"><FONT face=宋体>函数和别的函数非常的不一样。因为这个函数是用来做循环用的,</FONT></SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'">Makefile</SPAN><SPAN style="FONT-SIZE: 9pt; mso-ascii-font-family: 'Courier New'"><FONT face=宋体>中的</FONT></SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'">foreach</SPAN><SPAN style="FONT-SIZE: 9pt; mso-ascii-font-family: 'Courier New'"><FONT face=宋体>函数几乎是仿照于</FONT></SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'">Unix</SPAN><SPAN style="FONT-SIZE: 9pt; mso-ascii-font-family: 'Courier New'"><FONT face=宋体>标准</FONT></SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'">Shell</SPAN><SPAN style="FONT-SIZE: 9pt; mso-ascii-font-family: 'Courier New'"><FONT face=宋体>(</FONT></SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'">/bin/sh</SPAN><SPAN style="FONT-SIZE: 9pt; mso-ascii-font-family: 'Courier New'"><FONT face=宋体>)中的</FONT></SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'">for</SPAN><SPAN style="FONT-SIZE: 9pt; mso-ascii-font-family: 'Courier New'"><FONT face=宋体>语句,或是</FONT></SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'">C-Shell</SPAN><SPAN style="FONT-SIZE: 9pt; mso-ascii-font-family: 'Courier New'"><FONT face=宋体>(</FONT></SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'">/bin/csh</SPAN><SPAN style="FONT-SIZE: 9pt; mso-ascii-font-family: 'Courier New'"><FONT face=宋体>)中的</FONT></SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'">foreach</SPAN><FONT face=宋体><SPAN style="FONT-SIZE: 9pt; mso-ascii-font-family: 'Courier New'">语句而构建的。它的语法是:</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"><o:p></o:p></SPAN></FONT></P>
<P class=MsoPlainText style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"><o:p>&nbsp;</o:p></SPAN></P>
<P class=MsoPlainText style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"><SPAN style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp; </SPAN>$(foreach &lt;var&gt;,&lt;list&gt;,&lt;text&gt;)<o:p></o:p></SPAN></P>
<P class=MsoPlainText style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"><o:p>&nbsp;</o:p></SPAN></P>
<P class=MsoPlainText style="MARGIN: 0cm 0cm 0pt"><SPAN style="FONT-SIZE: 9pt; mso-ascii-font-family: 'Courier New'"><FONT face=宋体>这个函数的意思是,把参数</FONT></SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'">&lt;list&gt;</SPAN><SPAN style="FONT-SIZE: 9pt; mso-ascii-font-family: 'Courier New'"><FONT face=宋体>中的单词逐一取出放到参数</FONT></SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'">&lt;var&gt;</SPAN><SPAN style="FONT-SIZE: 9pt; mso-ascii-font-family: 'Courier New'"><FONT face=宋体>所指定的变量中,然后再执行</FONT></SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'">&lt;text&gt;</SPAN><SPAN style="FONT-SIZE: 9pt; mso-ascii-font-family: 'Courier New'"><FONT face=宋体>所包含的表达式。每一次</FONT></SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'">&lt;text&gt;</SPAN><SPAN style="FONT-SIZE: 9pt; mso-ascii-font-family: 'Courier New'"><FONT face=宋体>会返回一个字符串,循环过程中,</FONT></SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'">&lt;text&gt;</SPAN><SPAN style="FONT-SIZE: 9pt; mso-ascii-font-family: 'Courier New'"><FONT face=宋体>的所返回的每个字符串会以空格分隔,最后当整个循环结束时,</FONT></SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'">&lt;text&gt;</SPAN><SPAN style="FONT-SIZE: 9pt; mso-ascii-font-family: 'Courier New'"><FONT face=宋体>所返回的每个字符串所组成的整个字符串(以空格分隔)将会是</FONT></SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'">foreach</SPAN><FONT face=宋体><SPAN style="FONT-SIZE: 9pt; mso-ascii-font-family: 'Courier New'">函数的返回值。</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"><o:p></o:p></SPAN></FONT></P>
<P class=MsoPlainText style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"><o:p>&nbsp;</o:p></SPAN></P>
<P class=MsoPlainText style="MARGIN: 0cm 0cm 0pt"><SPAN style="FONT-SIZE: 9pt; mso-ascii-font-family: 'Courier New'"><FONT face=宋体>所以,</FONT></SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'">&lt;var&gt;</SPAN><SPAN style="FONT-SIZE: 9pt; mso-ascii-font-family: 'Courier New'"><FONT face=宋体>最好是一个变量名,</FONT></SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'">&lt;list&gt;</SPAN><SPAN style="FONT-SIZE: 9pt; mso-ascii-font-family: 'Courier New'"><FONT face=宋体>可以是一个表达式,而</FONT></SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'">&lt;text&gt;</SPAN><SPAN style="FONT-SIZE: 9pt; mso-ascii-font-family: 'Courier New'"><FONT face=宋体>中一般会使用</FONT></SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'">&lt;var&gt;</SPAN><SPAN style="FONT-SIZE: 9pt; mso-ascii-font-family: 'Courier New'"><FONT face=宋体>这个参数来依次枚举</FONT></SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'">&lt;list&gt;</SPAN><FONT face=宋体><SPAN style="FONT-SIZE: 9pt; mso-ascii-font-family: 'Courier New'">中的单词。举个例子:</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"><o:p></o:p></SPAN></FONT></P>
<P class=MsoPlainText style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"><o:p>&nbsp;</o:p></SPAN></P>
<P class=MsoPlainText style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>names := a b c d<o:p></o:p></SPAN></P>
<P class=MsoPlainText style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>files := $(foreach n,$(names),$(n).o)<o:p></o:p></SPAN></P>
<P class=MsoPlainText style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"><o:p>&nbsp;</o:p></SPAN></P>
<P class=MsoPlainText style="MARGIN: 0cm 0cm 0pt"><SPAN style="FONT-SIZE: 9pt; mso-ascii-font-family: 'Courier New'"><FONT face=宋体>上面的例子中,</FONT></SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'">$(name)</SPAN><SPAN style="FONT-SIZE: 9pt; mso-ascii-font-family: 'Courier New'"><FONT face=宋体>中的单词会被挨个取出,并存到变量“</FONT></SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'">n</SPAN><SPAN style="FONT-SIZE: 9pt; mso-ascii-font-family: 'Courier New'"><FONT face=宋体>”中,“</FONT></SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'">$(n).o</SPAN><SPAN style="FONT-SIZE: 9pt; mso-ascii-font-family: 'Courier New'"><FONT face=宋体>”每次根据“</FONT></SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'">$(n)</SPAN><SPAN style="FONT-SIZE: 9pt; mso-ascii-font-family: 'Courier New'"><FONT face=宋体>”计算出一个值,这些值以空格分隔,最后作为</FONT></SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'">foreach</SPAN><SPAN style="FONT-SIZE: 9pt; mso-ascii-font-family: 'Courier New'"><FONT face=宋体>函数的返回,所以,</FONT></SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'">$(files)</SPAN><SPAN style="FONT-SIZE: 9pt; mso-ascii-font-family: 'Courier New'"><FONT face=宋体>的值是“</FONT></SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'">a.o b.o c.o d.o</SPAN><FONT face=宋体><SPAN style="FONT-SIZE: 9pt; mso-ascii-font-family: 'Courier New'">”。</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"><o:p></o:p></SPAN></FONT></P>
<P class=MsoPlainText style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"><o:p>&nbsp;</o:p></SPAN></P>
<P class=MsoPlainText style="MARGIN: 0cm 0cm 0pt"><SPAN style="FONT-SIZE: 9pt; mso-ascii-font-family: 'Courier New'"><FONT face=宋体>注意,</FONT></SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'">foreach</SPAN><SPAN style="FONT-SIZE: 9pt; mso-ascii-font-family: 'Courier New'"><FONT face=宋体>中的</FONT></SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'">&lt;var&gt;</SPAN><SPAN style="FONT-SIZE: 9pt; mso-ascii-font-family: 'Courier New'"><FONT face=宋体>参数是一个临时的局部变量,</FONT></SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'">foreach</SPAN><SPAN style="FONT-SIZE: 9pt; mso-ascii-font-family: 'Courier New'"><FONT face=宋体>函数执行完后,参数</FONT></SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'">&lt;var&gt;</SPAN><SPAN style="FONT-SIZE: 9pt; mso-ascii-font-family: 'Courier New'"><FONT face=宋体>的变量将不在作用,其作用域只在</FONT></SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'">foreach</SPAN><FONT face=宋体><SPAN style="FONT-SIZE: 9pt; mso-ascii-font-family: 'Courier New'">函数当中。</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"><o:p></o:p></SPAN></FONT></P>
<P class=MsoPlainText style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"><o:p>&nbsp;</o:p></SPAN></P>
<P class=MsoPlainText style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"><o:p>&nbsp;</o:p></SPAN></P>
<H3 style="MARGIN: 13pt 0cm"><FONT size=2><SPAN style="FONT-FAMILY: 'Courier New'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">五、</SPAN><SPAN lang=EN-US>if </SPAN><SPAN style="FONT-FAMILY: 'Courier New'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">函数</SPAN></FONT></H3>
<P class=MsoPlainText style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"><o:p>&nbsp;</o:p></SPAN></P>
<P class=MsoPlainText style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'">if</SPAN><SPAN style="FONT-SIZE: 9pt; mso-ascii-font-family: 'Courier New'"><FONT face=宋体>函数很像</FONT></SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'">GNU</SPAN><SPAN style="FONT-SIZE: 9pt; mso-ascii-font-family: 'Courier New'"><FONT face=宋体>的</FONT></SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'">make</SPAN><SPAN style="FONT-SIZE: 9pt; mso-ascii-font-family: 'Courier New'"><FONT face=宋体>所支持的条件语句——</FONT></SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'">ifeq</SPAN><SPAN style="FONT-SIZE: 9pt; mso-ascii-font-family: 'Courier New'"><FONT face=宋体>(参见前面所述的章节),</FONT></SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'">if</SPAN><FONT face=宋体><SPAN style="FONT-SIZE: 9pt; mso-ascii-font-family: 'Courier New'">函数的语法是:</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"><o:p></o:p></SPAN></FONT></P>
<P class=MsoPlainText style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"><o:p>&nbsp;</o:p></SPAN></P>
<P class=MsoPlainText style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>$(if &lt;condition&gt;,&lt;then-part&gt;) <o:p></o:p></SPAN></P>
<P class=MsoPlainText style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"><o:p>&nbsp;</o:p></SPAN></P>
<P class=MsoPlainText style="MARGIN: 0cm 0cm 0pt"><FONT face=宋体><SPAN style="FONT-SIZE: 9pt; mso-ascii-font-family: 'Courier New'">或是</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"><o:p></o:p></SPAN></FONT></P>
<P class=MsoPlainText style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"><o:p>&nbsp;</o:p></SPAN></P>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -