不要忘记重新运行并检入配置文件和configure.in。这通常应该在修改configure.in或aclocal.m4时完成。当版本号在葡萄膜。小时
在Linux系统上,
cd icu4c/源
自动频率
查看要配置的更改,最常见的是更新的ICU版本号。有时,由于所使用的autoconf工具的不同版本,会存在差异。
更新urename.h以捕获所有可能的ICU4C库导出(尤其是在倾向于忽略导出限定符的非Windows系统上)。请参见 icu4c/source/tools/genren/README.
将新版本与前一版本进行比较;这里通常有一些糟糕的定义。
您需要确保所有定义都是正确的导出符号,并且Perl脚本没有无意中捕获无关文本。每个定义的格式应为“uxxxx_NamingConvention”。如果不是,那么您需要确定这是脚本问题还是命名不当的方法。
另外,请注意此类消息:“***警告ShoeSize::ShoeSize()上的错误命名空间(不是“icu”)-这可能意味着在“icu”命名空间中没有定义类。请考虑添加U_NAMESPACE_BEGIN公司和U_NAMESPACE_END(美国地名)围绕类和成员定义。
ICU 64过时+:不再签入池捆绑包。相反,它们是动态构建的。(如果数据被过滤,则更小。)
区域设置数据资源捆绑包使用pool.res捆绑包(每个捆绑包树一个)来共享其大部分资源表键字符串。我们应该在每次发布时更新一次池包,或者在从CLDR获取新数据时,或者在更改树或键结构时,以捕获更改的键字符串集。
建造ICU4C
检查旧池捆绑包的日期和大小,以便稍后进行比较
~/icu/mine/src$find icu4c-name“pool.res”-exec ls-l“{}”\;
临时修改数据生成文件:s/usePoolBundle/writePoolBund/
如果您不在Windows上,则可能还需要对Makefile进行其他更改。请参见重症监护室-8101(包含数据/Makefile修补程序;在那里使用最新版本)
我喜欢复制Makefile,然后对其进行更改,将其保存以备可能的重用,然后再将原始文件复制回来。
尝试修补它,而不是手动重做:~/icu/mine/bld/icu4c/data$patch-p0<~/Downloads/Makefile-writePoolBundle.patch
重建数据(确保它确实得到重建:cd data,make clean,make)
复制所有pool.res文件,如下所示
Linux ICU 63,从构建输出的数据目录中:
重症监护病房=icudt63l
cp-out/build/$ICUDT/pool.res../..//src/icu4c/source/data/locates(src/icu4c/source/data/locates)
cp-out/build/$ICUDT/lang/pool.res../..//src/icu4c/source/data/lang
cp-out/build/$ICUDT/region/pool.res../..//src/icu4c/source/data/region
cp-out/build/$ICUDT/zone/pool.res../..//src/icu4c/source/data/zone
cp-out/build/$ICUDT/curr/pool.res../..//src/icu4c/source/data/curr
cp-out/build/$ICUDT/unit/pool.res../..//src/icu4c/source/data/unit
双击旧泳池捆绑包的日期和大小。由于CLDR数据的增加,大小通常比以前高出几个百分点。
还原数据生成文件更改(如果保留了副本,请复制回原始文件)
重建数据(确保它确实得到重建:make clean,make)
构建ICU4C并运行测试
重建ICU4J data.jar文件
如果有应使用pool.res文件的新捆绑树(如ICU 54票据中的“单元”树 #11092个),然后首先修改数据生成文件(Windows和Linux),将新的pool.res添加到相应的文件列表中,并首先添加--writePoolBundle,最后还需要将其转换为--usePoolBund。或者,更简单的做法是,首先复制(svn-cp)父树的池包,然后在稍后(可能在发布任务工作期间)对其进行更新。