当前位置: 首页 > news >正文

build.log中的is not a subdirectory of和ScanSourceDirectories函数的关系

ScanSourceDirectories

第一部分:
E:\srv03rtm\sdktools\build>grep "is not a subdirectory of" -nr *.c
buildsrc.c:2222:                              "%s found in %s, is not a subdirectory of %s\r\n",

第二部分:

//+---------------------------------------------------------------------------
//
//  Function:   MarkDirNames
//
//  Synopsis:   Parses a DIRS= or OPTIONAL_DIRS line and marks the directories
//              appropriately.
//
//  Arguments:  [DirDB]    -- Directory containing DIRS file
//              [TextLine] -- DIRS= or OPTIONAL_DIRS= line
//              [Required] -- Indicates if directories are optional or not.
//
//----------------------------------------------------------------------------

VOID
MarkDirNames(PDIRREC DirDB, LPSTR TextLine, BOOL Required)
{

                if (FileDB == NULL) {
BuildError(
"%s found in %s, is not a subdirectory of %s\r\n",
dirbuf,
FormatPathName(DirDB->Name, *ppCurrentDirsFileName),
DirDB->Name);
}


第三部分:例子

BUILD: fontsub found in windows\core\ntgdi\dirs, is not a subdirectory of d:\srv03rtm\windows\core\ntgdi
BUILD: otfd found in windows\core\ntgdi\fondrv\dirs, is not a subdirectory of d:\srv03rtm\windows\core\ntgdi\fondrv
BUILD: trmn found in windows\core\ntgdi\fonts\dirs, is not a subdirectory of d:\srv03rtm\windows\core\ntgdi\fonts
BUILD: chs found in windows\core\ntgdi\fonts\dirs, is not a subdirectory of d:\srv03rtm\windows\core\ntgdi\fonts
BUILD: kor found in windows\core\ntgdi\fonts\dirs, is not a subdirectory of d:\srv03rtm\windows\core\ntgdi\fonts
BUILD: jpn found in windows\core\ntgdi\fonts\dirs, is not a subdirectory of d:\srv03rtm\windows\core\ntgdi\fonts
BUILD: t2embed found in windows\core\ntgdi\mstypeo\dirs, is not a subdirectory of d:\srv03rtm\windows\core\ntgdi\mstypeo
BUILD: src found in windows\feime\jpn\dirs, is not a subdirectory of d:\srv03rtm\windows\feime\jpn
BUILD: ime2k_source found in windows\feime\chs\dirs, is not a subdirectory of d:\srv03rtm\windows\feime\chs
BUILD: ime2002a found in windows\feime\cht\dirs, is not a subdirectory of d:\srv03rtm\windows\feime\cht
BUILD: ime98b found in windows\feime\cht\dirs, is not a subdirectory of d:\srv03rtm\windows\feime\cht
BUILD: lnk found in base\fs\hsm\dirs, is not a subdirectory of d:\srv03rtm\base\fs\hsm
BUILD: test found in base\fs\hsm\dirs, is not a subdirectory of d:\srv03rtm\base\fs\hsm
BUILD: dfrg found in base\fs\utils\dirs, is not a subdirectory of d:\srv03rtm\base\fs\utils
BUILD: ntback50 found in base\fs\utils\dirs, is not a subdirectory of d:\srv03rtm\base\fs\utils
BUILD: cht found in base\win32\winnls\dirs, is not a subdirectory of d:\srv03rtm\base\win32\winnls
BUILD: d:\srv03rtm\base\ntsetup: ignoring bad subdirectory: {x86}
BUILD: chscht found in base\ntsetup\migdlls\dirs, is not a subdirectory of d:\srv03rtm\base\ntsetup\migdlls
BUILD: cjime98 found in base\ntsetup\migdlls\dirs, is not a subdirectory of d:\srv03rtm\base\ntsetup\migdlls
BUILD: mapi found in base\ntsetup\migdlls\dirs, is not a subdirectory of d:\srv03rtm\base\ntsetup\migdlls
BUILD: msp found in base\ntsetup\migdlls\dirs, is not a subdirectory of d:\srv03rtm\base\ntsetup\migdlls
BUILD: eastman found in base\ntsetup\migdlls\dirs, is not a subdirectory of d:\srv03rtm\base\ntsetup\migdlls
BUILD: acrobat found in base\ntsetup\migdlls\dirs, is not a subdirectory of d:\srv03rtm\base\ntsetup\migdlls
BUILD: octopus found in base\ntsetup\migdlls\dirs, is not a subdirectory of d:\srv03rtm\base\ntsetup\migdlls
BUILD: hptools found in base\ntsetup\migdlls\dirs, is not a subdirectory of d:\srv03rtm\base\ntsetup\migdlls
BUILD: ibmav found in base\ntsetup\migdlls\dirs, is not a subdirectory of d:\srv03rtm\base\ntsetup\migdlls
BUILD: rumba found in base\ntsetup\migdlls\dirs, is not a subdirectory of d:\srv03rtm\base\ntsetup\migdlls
BUILD: necwps found in base\ntsetup\migdlls\dirs, is not a subdirectory of d:\srv03rtm\base\ntsetup\migdlls
BUILD: necpa found in base\ntsetup\migdlls\dirs, is not a subdirectory of d:\srv03rtm\base\ntsetup\migdlls
BUILD: neckbd found in base\ntsetup\migdlls\dirs, is not a subdirectory of d:\srv03rtm\base\ntsetup\migdlls
BUILD: dmicall found in base\ntsetup\migdlls\dirs, is not a subdirectory of d:\srv03rtm\base\ntsetup\migdlls
BUILD: sisagp found in base\busdrv\agp\dirs, is not a subdirectory of d:\srv03rtm\base\busdrv\agp
BUILD: amdagp found in base\busdrv\agp\dirs, is not a subdirectory of d:\srv03rtm\base\busdrv\agp

解释:

BUILD: chs found in windows\core\ntgdi\fonts\dirs, is not a subdirectory of d:\srv03rtm\windows\core\ntgdi\fonts
BUILD: kor found in windows\core\ntgdi\fonts\dirs, is not a subdirectory of d:\srv03rtm\windows\core\ntgdi\fonts
BUILD: jpn found in windows\core\ntgdi\fonts\dirs, is not a subdirectory of d:\srv03rtm\windows\core\ntgdi\fonts 
chs

kor

jpn

三个目录不存在,但出现在了windows\core\ntgdi\fonts\dirs文件中:

DIRS= \
trmn \
binplace \
chs  \
cht  \
kor  \
jpn  \
meti \
embedded

第四部分:


E:\srv03rtm\sdktools\build>grep "MarkDirNames" -nr *.c
buildsrc.c:156:MarkDirNames(PDIRREC DirDB, LPSTR TextLine, BOOL Required);
buildsrc.c:1945:        MarkDirNames(DirDB, pValue, TRUE);
buildsrc.c:1948:        MarkDirNames(DirDB, pValue, BuildAllOptionalDirs);
buildsrc.c:2108://  Function:   MarkDirNames
buildsrc.c:2120:MarkDirNames(PDIRREC DirDB, LPSTR TextLine, BOOL Required)


//+---------------------------------------------------------------------------
//
//  Function:   ReadDirsFile
//
//  Synopsis:   Parse the DIRS file
//
//  Arguments:  [DirDB] -- Directory to look in
//
//  Returns:    TRUE if parsed
//
//  Notes:      The existence of a file named 'mydirs' or the name of the
//              target specific dirs will override the normal 'dirs' file.
//
//----------------------------------------------------------------------------

BOOL
ReadDirsFile(
PDIRREC DirDB
)

{


if ((pValue = FindMacro("DIRS")) != NULL) {
MarkDirNames(DirDB, pValue, TRUE);
}
if ((pValue = FindMacro("OPTIONAL_DIRS")) != NULL) {
MarkDirNames(DirDB, pValue, BuildAllOptionalDirs);
}


第五部分:


E:\srv03rtm\sdktools\build>grep "ReadDirsFile" -nr *.c
buildmak.c:1348:        DirsPresent = ReadDirsFile(DirDB);
buildsrc.c:1884://  Function:   ReadDirsFile
buildsrc.c:1898:ReadDirsFile(


第六部分:

//+---------------------------------------------------------------------------
//
//  Function:   ScanSourceDirectories
//
//  Synopsis:   Scan a source directory to determine what files it
//              contains, whether it should be compiled or linked, and
//              whether it has subdirectories that we should process.
//
//  Arguments:  [DirName] -- Directory to scan
//
//----------------------------------------------------------------------------

VOID
ScanSourceDirectories(LPSTR DirName)
{

    if (DirDB->DirFlags & DIRDB_SOURCES) {


} else
if (DirDB->DirFlags & DIRDB_DIRS) {
//
// This directory contains a DIRS or MYDIRS file
//
DirsPresent = ReadDirsFile(DirDB);


第七部分:

E:\srv03rtm\sdktools\build>grep "ScanSourceDirectories" -nr *.c
build.c:959:        ScanSourceDirectories( CurrentDirectory );
build.c:1052:                    ScanSourceDirectories( CurrentDirectory );
buildmak.c:1200://  Function:   ScanSourceDirectories
buildmak.c:1211:ScanSourceDirectories(LPSTR DirName)
buildmak.c:1223:                   "ScanSourceDirectories(%s) level = %d\r\n",
buildmak.c:1284:            BuildMsgRaw("ScanSourceDirectories(%s) SOURCES\r\n", DirName);
buildmak.c:1351:            BuildMsgRaw("ScanSourceDirectories(%s) DIRS\r\n", DirName);
buildmak.c:1497:                    ScanSourceDirectories(path);


第八部分:


//+---------------------------------------------------------------------------
//
//  Function:   main
//
//----------------------------------------------------------------------------

int
__cdecl main(
int argc,
LPSTR argv[]
)
{


fFirstScan = TRUE;
fPassZero  = FALSE;
ScanSourceDirectories( CurrentDirectory );

        if ( !fLinkOnly && CountPassZeroDirs && !bBaselineFailure) {
。。。

            if ((CountPassZeroDirs > 0) && (c == '\n') && !bBaselineFailure) {
DWORD dwStartTime = GetTickCount();
。。。

                // This will compile directories if fQuicky is TRUE
if (!fStopAfterPassZero) {
ScanSourceDirectories( CurrentDirectory );
}

http://www.dtcms.com/a/285836.html

相关文章:

  • 「Java案例」方法重装求不同类型数的立方
  • MySql:索引,结构
  • Leetcode 04 java
  • cocosCreator2.4 Android 输入法遮挡
  • JAVA中StringBuilder类,StringJoiner类构造函数方法简单介绍
  • C语言基础:数组练习题
  • Zabbix安装-Server
  • 【JS笔记】Java Script学习笔记
  • 【C语言进阶】题目练习(2)
  • react控制react Popover组件显示隐藏
  • Vue3 中使用 Element Plus 实现自定义按钮的 ElNotification 提示框
  • WAF 能防御哪些攻击?
  • logback日志控制服务器日志输出
  • Leetcode刷题营第三十三题:对称二叉树
  • Gitee 远程库多人如何协作?
  • gitlab-runner配置问题记录
  • hive分区表临时加载日批数据文件
  • TapData 出席 2025 MongoDB 用户大会新加坡站,分享构建实时统一数据平台最佳实践
  • day24 力扣93.复原IP地址 力扣78.子集 力扣90.子集II
  • 【基座模型】Qwen3报告总结
  • 告别 addEventListener
  • effective python 条款11 学会对序列做切片
  • 人脸检测算法——SCRFD
  • 智能Agent场景实战指南 Day 16:Agent记忆系统设计
  • 解决 Selenium 页面跳转过快导致的内容获取问题:从原理到实践
  • 基于ROS2进行相机标定,并通过测试相机到棋盘格之间的距离进行验证
  • 大模型格式
  • (一)Eshop(异常处理中间件)
  • 工业数据集成中间件工具OPC Router详细介绍
  • Prompt:开启与AI高效对话的钥匙