亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? build.headers.html

?? ecos 文檔
?? HTML
?? 第 1 頁 / 共 3 頁
字號:
<!-- Copyright (C) 2003 Red Hat, Inc.                                -->
<!-- This material may be distributed only subject to the terms      -->
<!-- and conditions set forth in the Open Publication License, v1.0  -->
<!-- or later (the latest version is presently available at          -->
<!-- http://www.opencontent.org/openpub/).                           -->
<!-- Distribution of the work or derivative of the work in any       -->
<!-- standard (paper) book form is prohibited unless prior           -->
<!-- permission is obtained from the copyright holder.               -->
<HTML
><HEAD
><TITLE
>Configuration Header File Generation</TITLE
><meta name="MSSmartTagsPreventParsing" content="TRUE">
<META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
"><LINK
REL="HOME"
TITLE="The eCos Component Writer's Guide"
HREF="cdl-guide.html"><LINK
REL="UP"
TITLE="The Build Process"
HREF="build.html"><LINK
REL="PREVIOUS"
TITLE="The Build Process"
HREF="build.html"><LINK
REL="NEXT"
TITLE="Building eCos"
HREF="build.make.html"></HEAD
><BODY
CLASS="SECT1"
BGCOLOR="#FFFFFF"
TEXT="#000000"
LINK="#0000FF"
VLINK="#840084"
ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TH
COLSPAN="3"
ALIGN="center"
>The <SPAN
CLASS="APPLICATION"
>eCos</SPAN
> Component Writer's Guide</TH
></TR
><TR
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="build.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
>Chapter 4. The Build Process</TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="build.make.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><DIV
CLASS="SECT1"
><H1
CLASS="SECT1"
><A
NAME="BUILD.HEADERS">Configuration Header File Generation</H1
><P
>Configuration options can affect a build in two main ways. First,
enabling a configuration option or other <SPAN
CLASS="APPLICATION"
>CDL</SPAN
> entity can result in
various files being built and added to a library, thus providing
functionality to the application code. However this mechanism can only
operate at a rather coarse grain, at the level of entire source files.
Hence the component framework also generates configuration header
files containing mainly C preprocessor <TT
CLASS="LITERAL"
>#define</TT
>
directives. Package source code can then <TT
CLASS="LITERAL"
>#include</TT
>
the appropriate header files and use <TT
CLASS="LITERAL"
>#if</TT
>,
<TT
CLASS="LITERAL"
>#ifdef</TT
> and <TT
CLASS="LITERAL"
>#ifndef</TT
> directives to
adapt accordingly. In this way configuration options can be used to
enable or disable entire functions within a source file or just a
single line, whichever is appropriate.</P
><P
>The configuration header files end up in the <TT
CLASS="FILENAME"
>include/pkgconf</TT
> subdirectory of the
install tree. There will be one header file for the system as a whole,
<TT
CLASS="FILENAME"
>pkgconf/system.h</TT
>, and there will
be additional header files for each package, for example
<TT
CLASS="FILENAME"
>pkgconf/kernel.h</TT
>. The header files
are generated when creating or updating the build and install trees,
which needs to happen after every change to the configuration.</P
><P
>The component framework processes each package in the configuration
one at a time. The exact order in which the packages are processed is
not defined, so the order in which <TT
CLASS="LITERAL"
>#define's</TT
> will
end up in the global <TT
CLASS="FILENAME"
>pkgconf/system.h</TT
> header may vary. However
for any given configuration the order should remain consistent until
packages are added to or removed from the system. This avoids
unnecessary changes to the global header file and hence unnecessary
rebuilds of the packages and of application code because of header
file dependency handling.</P
><P
>Within a given package the various components, options and interfaces
will be processed in the order in which they were defined in the
corresponding <SPAN
CLASS="APPLICATION"
>CDL</SPAN
> scripts. Typically the data in the configuration
headers consists only of a sequence of <TT
CLASS="LITERAL"
>#define's</TT
> so
the order in which these are generated is irrelevant, but some
properties such as <SPAN
CLASS="PROPERTY"
>define_proc</SPAN
> can be used to add arbitrary data to
a configuration header and hence there may be dependencies on the
order. It should be noted that re-parenting an option below some other
package has no effect on which header file will contain the
corresponding <TT
CLASS="LITERAL"
>#define</TT
>: the preprocessor directives
will always end up in the header file for the package that defines the
option, or in the global configuration header.</P
><P
>There are six properties which affect the process of generating header
files:
<A
HREF="ref.define-header.html"
><SPAN
CLASS="PROPERTY"
>define_header</SPAN
></A
>,
<A
HREF="ref.no-define.html"
><SPAN
CLASS="PROPERTY"
>no_define</SPAN
></A
>,
<A
HREF="ref.define-format.html"
><SPAN
CLASS="PROPERTY"
>define_format</SPAN
></A
>,
<A
HREF="ref.define.html"
><SPAN
CLASS="PROPERTY"
>define</SPAN
></A
>,
<A
HREF="ref.if-define.html"
><SPAN
CLASS="PROPERTY"
>if_define</SPAN
></A
>, and
<A
HREF="ref.define-proc.html"
><SPAN
CLASS="PROPERTY"
>define_proc</SPAN
></A
>.</P
><P
>The <SPAN
CLASS="PROPERTY"
>define_header</SPAN
> property can only occur in the body of a
<TT
CLASS="LITERAL"
>cdl_package</TT
> command and specifies the name of the header file which
should contain the package's configuration data, for example:</P
><TABLE
BORDER="5"
BGCOLOR="#E0E0F0"
WIDTH="70%"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>cdl_package &lt;some_package&gt; {
    &#8230;
    define_header xyzzy.h
}</PRE
></TD
></TR
></TABLE
><P
>Given such a <SPAN
CLASS="PROPERTY"
>define_header</SPAN
> property the component framework will
use the file <TT
CLASS="FILENAME"
>pkgconf/xyzzy.h</TT
> for
the package's configuration data. If a package does not have
a <SPAN
CLASS="PROPERTY"
>define_header</SPAN
> property then a suitable file name is constructed
from the package's name. This involves:</P
><P
></P
><OL
TYPE="1"
><LI
><P
>All characters in the package name up to and including the first
underscore are removed. For example <TT
CLASS="VARNAME"
>CYGPKG_KERNEL</TT
>
is converted to <TT
CLASS="LITERAL"
>KERNEL</TT
>, and
<TT
CLASS="VARNAME"
>CYGPKG_HAL_ARM</TT
> is converted to
<TT
CLASS="LITERAL"
>HAL_ARM</TT
>.</P
></LI
><LI
><P
>Any upper case letters in the resulting string will be converted to
lower case, yielding e.g. <TT
CLASS="LITERAL"
>kernel</TT
> and
<TT
CLASS="LITERAL"
>hal_arm</TT
>.</P
></LI
><LI
><P
>A <TT
CLASS="LITERAL"
>.h</TT
> suffix is appended, yielding e.g.
<TT
CLASS="LITERAL"
>kernel.h</TT
> and <TT
CLASS="LITERAL"
>hal_arm.h</TT
>.</P
></LI
></OL
><P
>Because of the naming restrictions on configuration options, this
should result in a valid filename. There is a small possibility of a
file name class, for example <TT
CLASS="VARNAME"
>CYGPKG_PLUGH</TT
> and
<TT
CLASS="VARNAME"
>CYGPKG_plugh</TT
> would both end up trying to use the
same header file <TT
CLASS="FILENAME"
>pkgconf/plugh.h</TT
>,
but the use of lower case letters for package names violates the
naming conventions. It is not legal to use the <SPAN
CLASS="PROPERTY"
>define_header</SPAN
>
property to put the configuration data for several packages in a
single header file. The resulting behaviour is undefined.</P
><P
>Once the name of the package's header file has been determined and the
file has been opened, the various components, options and interfaces
in the package will be processed starting with the package itself. The
following steps are involved:</P
><P
></P
><OL
TYPE="1"
><LI
><P
>If the current option or other <SPAN
CLASS="APPLICATION"
>CDL</SPAN
> entity is inactive or disabled,
the option is ignored for the purposes of header file generation.
<TT
CLASS="LITERAL"
>#define's</TT
> are only generated for options that are
both active and enabled.</P
></LI
><LI
><P
>The next step is to generate a default <TT
CLASS="LITERAL"
>#define</TT
> for
the current option. If this option has a <SPAN
CLASS="PROPERTY"
>no_define</SPAN
> property then the
default <TT
CLASS="LITERAL"
>#define</TT
> is suppressed, and processing
continues for <SPAN
CLASS="PROPERTY"
>define</SPAN
>, <SPAN
CLASS="PROPERTY"
>if_define</SPAN
> and <SPAN
CLASS="PROPERTY"
>define_proc</SPAN
> properties.</P
><P
></P
><OL
TYPE="a"
><LI
><P
>The header file appropriate for the default <TT
CLASS="LITERAL"
>#define</TT
>
is determined. For a <TT
CLASS="LITERAL"
>cdl_package</TT
> this will be <TT
CLASS="FILENAME"
>pkgconf/system.h</TT
>, for any other option this
will be the package's own header file. The intention here is that
packages and application code can always determine which packages are
in the configuration by <TT
CLASS="LITERAL"
>#include'ing</TT
> <TT
CLASS="FILENAME"
>pkgconf/system.h</TT
>. The C preprocessor lacks
any facilities for including a header file only if it exists, and
taking appropriate action otherwise.</P
></LI
><LI
><P
>For options with the flavors <TT
CLASS="LITERAL"
>bool</TT
> or
<TT
CLASS="LITERAL"
>none</TT
>, a single <TT
CLASS="LITERAL"
>#define</TT
> will be
generated. This takes the form:</P
><TABLE
BORDER="5"
BGCOLOR="#E0E0F0"
WIDTH="70%"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>#define &lt;option&gt; 1</PRE
></TD
></TR
></TABLE
><P
>For example:</P
><TABLE
BORDER="5"
BGCOLOR="#E0E0F0"
WIDTH="70%"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>#define CYGFUN_LIBC_TIME_POSIX 1</PRE
></TD
></TR
></TABLE
><P
>Package source code can check whether or not an option is active and
enabled by using the <TT
CLASS="LITERAL"
>#ifdef</TT
>,
<TT
CLASS="LITERAL"
>#ifndef</TT
> or <TT
CLASS="LITERAL"
>#if
defined(&#8230;)</TT
>directives.</P
></LI
><LI
><P
>For options with the flavors <TT
CLASS="LITERAL"
>data</TT
> or
<TT
CLASS="LITERAL"
>booldata</TT
>, either one or two
<TT
CLASS="LITERAL"
>#define's</TT
> will be generated. The first of these may
be affected by a <SPAN
CLASS="PROPERTY"
>define_format</SPAN
> property. If this property is not

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人av网站大全| 久久品道一品道久久精品| 日韩你懂的电影在线观看| 亚洲国产精品黑人久久久| 亚洲综合色在线| 成人自拍视频在线| 91精品麻豆日日躁夜夜躁| 亚洲嫩草精品久久| 成人国产精品免费网站| 欧美xxx久久| 午夜精品福利一区二区三区av| 成人小视频免费观看| 精品免费国产一区二区三区四区| 一区二区三区精品在线| 成人视屏免费看| 欧美成人一区二区三区在线观看| 亚洲一区电影777| 99vv1com这只有精品| 久久精品亚洲一区二区三区浴池| 麻豆91免费看| 欧美一级视频精品观看| 亚洲永久精品国产| 色婷婷久久久亚洲一区二区三区| 国产欧美一区二区精品性| 亚洲成人免费看| 欧美日韩国产不卡| 香蕉成人伊视频在线观看| 在线观看视频一区| 亚洲综合999| 欧美伊人久久大香线蕉综合69 | 91国产丝袜在线播放| 欧美激情在线一区二区| 国产不卡一区视频| 久久中文字幕电影| 国产精品亚洲一区二区三区在线| 日韩欧美视频在线| 蜜臀av性久久久久蜜臀aⅴ| 日韩欧美中文字幕精品| 久久成人精品无人区| 欧美不卡一二三| 国产一区二区三区国产| 久久精子c满五个校花| 国产精品一区在线观看乱码| 久久久久久久久蜜桃| 国产精品一区一区| 亚洲欧洲在线观看av| 91丨porny丨最新| 亚洲一区二区三区四区在线 | 国产曰批免费观看久久久| 日韩一区二区麻豆国产| 精品一区二区三区免费视频| 精品日韩av一区二区| 国产精品911| 亚洲欧美日韩国产成人精品影院| 在线一区二区三区| 日韩精品1区2区3区| 欧美电影免费观看高清完整版在| 国产一区二区精品久久91| 中文乱码免费一区二区| 成人91在线观看| 五月婷婷综合网| 精品乱码亚洲一区二区不卡| 大胆亚洲人体视频| 肉丝袜脚交视频一区二区| 久久综合国产精品| 91高清视频免费看| 精品无码三级在线观看视频| 国产精品高潮呻吟| 91精品在线观看入口| 不卡的av电影在线观看| 激情欧美一区二区| 中文幕一区二区三区久久蜜桃| 欧美日韩在线三级| 丰满岳乱妇一区二区三区| 亚洲自拍偷拍综合| 国产婷婷色一区二区三区| 在线观看日韩精品| 国产精品一区二区在线观看网站| 一区二区三区在线免费播放| 欧美大度的电影原声| 色综合天天综合网天天狠天天| 日韩av一级电影| 亚洲精品欧美综合四区| 精品福利视频一区二区三区| 91福利精品第一导航| 国产成人精品一区二区三区网站观看| 亚洲精品少妇30p| 国产欧美一区二区在线观看| 日韩午夜精品电影| 91麻豆国产在线观看| 国产精品一二一区| 天堂成人国产精品一区| 一区二区三区四区乱视频| 中文字幕免费不卡在线| 欧美一区二区三区四区在线观看 | 国产盗摄女厕一区二区三区| 偷拍日韩校园综合在线| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆| 欧美r级在线观看| 日韩一区二区三区高清免费看看| 91精品1区2区| 日本久久电影网| 91女神在线视频| 波多野结衣一区二区三区 | 国产精品三级电影| 2020国产精品自拍| 日韩精品在线看片z| 欧美日韩高清一区二区三区| 欧美综合在线视频| 在线免费观看日韩欧美| 99国产精品久久久久| 91在线视频免费观看| 波多野结衣精品在线| 91网站在线播放| 色综合久久99| 欧美综合亚洲图片综合区| 91久久精品一区二区三| 91麻豆福利精品推荐| 色欧美片视频在线观看在线视频| www.成人网.com| 色狠狠色狠狠综合| 欧美日韩久久一区| 91精品国产91久久综合桃花| 欧美一级夜夜爽| 精品美女被调教视频大全网站| 2020国产成人综合网| 欧美国产欧美综合| 亚洲丝袜美腿综合| 亚洲国产裸拍裸体视频在线观看乱了 | 精品一区中文字幕| 国内精品写真在线观看| 国产成人午夜99999| 97精品视频在线观看自产线路二| 一本大道av伊人久久综合| 欧美精品日韩精品| 欧美成人三级在线| 日本一区二区三区高清不卡| 国产精品视频看| 亚洲乱码国产乱码精品精98午夜| 亚洲第一主播视频| 精品一区二区三区免费视频| 成人手机在线视频| 欧美午夜精品免费| 欧美不卡在线视频| 亚洲免费高清视频在线| 日本美女视频一区二区| 国产精品亚洲午夜一区二区三区| 色综合久久久久久久久久久| 欧美日韩一区视频| 久久青草国产手机看片福利盒子| 亚洲男人的天堂一区二区| 欧美aⅴ一区二区三区视频| 国产99精品国产| 678五月天丁香亚洲综合网| 欧美精品一区二区三区很污很色的| 亚洲欧洲av在线| 另类中文字幕网| 日本韩国精品在线| 久久精品视频在线看| 一区二区三区在线看| 国产成人午夜视频| 欧美伦理视频网站| 国产精品久久久久久久蜜臀 | 亚洲综合小说图片| 国产精品99久久久久久有的能看 | 日韩欧美激情四射| 亚洲卡通动漫在线| 国产精品88888| 欧美一区二区三区视频免费 | 久久久精品黄色| 视频一区欧美精品| 色婷婷国产精品综合在线观看| 欧美电影免费观看完整版| 一级中文字幕一区二区| 成人免费毛片片v| 精品精品国产高清一毛片一天堂| 亚洲第一福利视频在线| 91在线高清观看| 中文字幕欧美国产| 国产一区福利在线| 日韩女优视频免费观看| 亚洲综合免费观看高清完整版 | 成人黄色电影在线| 日韩免费福利电影在线观看| 亚洲成人久久影院| 91国产免费观看| 亚洲激情网站免费观看| thepron国产精品| 久久精品一区二区三区不卡| 美国三级日本三级久久99| 欧美美女bb生活片| 亚洲成人免费影院| 欧美在线观看一区二区| 亚洲伦理在线免费看| 91在线观看地址| 亚洲日本在线看| 在线视频综合导航| 一区二区三区四区视频精品免费 | 不卡的av网站| 亚洲视频在线观看三级|