鸿蒙编译子系统详解(六)hb build流程target_generate

  • _target_generate()

源码:

def _target_generate(self):
    self._run_phase(BuildPhase.TARGET_GENERATE)
    if self.args_dict.get('fast_rebuild', None) and not self.args_dict.get("fast_rebuild").arg_value:
        self.target_generator.run()

调用_run_phase()解析TARGET_GENERATE阶段的参数。

如果存在fast_rebuild参数,则跳过随后的target_generator过程。

执行target_generator的run()。

TARGET_GENERATE阶段的参数如下:

参数名称

说明

默认值

build-type

指定编译发布或调试版本

release

log-level

日志级别,可选info或debug,在调试模式下,显示所有构建命令,包括cxx、、link、solink等

info

export-para

废弃

test

选择测试类型,比如xts

gn-args

指定gn构建参数。例如is_debug=true

gn-flags

指定gn构建标志。例如"--export-compile-commands"

compiler

废弃

clang

fast-rebuild

是否跳过准备阶段,当gn脚本未修改时使用可加快编译速度

false

runtime-mode

运行时模式,可选release、debug、profile

release

    • 参数解析
    • build-type:resolve_build_type()

如果类型是debug,则target_generator添加is_debug=true参数

如果类型是profile,则target_generator添加is_profile=true参数

      • log-level:resolve_log_level()

如果level是debug,则target_generator添加-v、--tracelog、--ide三个参数,target_compiler添加-v参数。

      • export-para:resolve_export_para()

废弃

      • test:resolve_test()

target_generator注册ohos_xts_test_args或ohos_test_args参数

      • gn-args:resolve_gn_args()

解析传入参数,target_generator注册对应的参数

      • gn-flags:resolve_gn_flags()

target_generator注册gn_flags参数

      • compiler:resolve_compiler()

      • fast-rebuild:resolve_fast_rebuild()

      • runtime-mode:resolve_runtime_mode()

target_generator注册runtime_mode参数

    • 服务

调用target_generator.run()

    def run(self):
        self.execute_gn_cmd(CMDTYPE.GEN)

源码build/hb/services/gn.py,执行gn gen命令:

        prebuilts/build-tools/linux-x86/bin/gn gen --args="......" out/rk3568

其中--args中包含有全部参数的值。完整命令如下:

/home/pan/work/40release/prebuilts/build-tools/linux-x86/bin/gn gen --args="product_name=\"rk3568\" product_path=\"/home/pan/work/40release/vendor/hihope/rk3568\" product_config_path=\"/home/pan/work/40release/vendor/hihope/rk3568\" device_name=\"rk3568\" device_path=\"/home/pan/work/40release/device/board/rockchip/rk3568\" device_company=\"rockchip\" device_config_path=\"/home/pan/work/40release/device/board/rockchip/rk3568\" target_cpu=\"arm\" is_standard_system=true ohos_build_compiler_specified=\"\" ohos_build_time=1713944488022 ohos_build_datetime=\"2024-04-24 23:41:28\" ace_engine_feature_enable_accessibility=true ace_engine_feature_enable_web=true datamgr_service_udmf=true enable_ohos_startup_init_feature_ab_partition=true enable_ohos_startup_init_feature_loader=true dsoftbus_feature_conn_p2p=true dsoftbus_feature_disc_ble=true dsoftbus_feature_conn_br=true dsoftbus_feature_conn_ble=true dsoftbus_feature_trans_udp_stream=true wifi_feature_non_seperate_p2p=true wifi_feature_non_hdf_driver=true graphic_2d_feature_rs_enable_eglimage=true audio_framework_feature_dtmf_tone=true audio_framework_feature_opensl_es=true input_feature_combination_key=true input_feature_pointer_drawing=true input_feature_interceptor=true input_feature_monitor=true input_feature_keyboard=true input_feature_mouse=true input_feature_touchscreen=true input_feature_input_device=true wpa_supplicant_driver_nl80211=true memmgr_purgeable_memory=true fusion_interaction_coordination=false hdf_core_platform_test_support=true drivers_peripheral_input_feature_model=true drivers_peripheral_display_community=true drivers_peripheral_wlan_feature_enable_HDF_NL80211=true drivers_peripheral_wlan_feature_enable_HDF_UT=false drivers_peripheral_sensor_feature_model=true drivers_peripheral_audio_feature_full_test_suite=true drivers_peripheral_audio_feature_alsa_lib=false drivers_peripheral_audio_feature_effect=true drivers_peripheral_light_feature_model=true drivers_peripheral_vibrator_feature_model=true drivers_peripheral_codec_feature_support_omx_extend_test=true drivers_peripheral_codec_feature_support_hdi_v1=true use_ffrt=true ohos_build_enable_ccache=true ohos_build_type=\"debug\" device_type=\"default\" build_variant=\"root\" runtime_mode=\"release\"" /home/pan/work/40release/out/rk3568

gn命令执行时间较长,执行完毕后,生成了大量文件,主要的文件或目录如下:

./out/rk3568
├── args.gn                           #编译参数
├── build.ninja                       #ninja编译规则脚本
├── build.ninja.d                     #文件依赖关系
├── clang_x64                         #clang编译x64架构输出文件
├── gen                               #生成的源文件、配置等
├── mingw_x86_64                      #mingw编译输出文件
├── module_list_files                 #各子系统部件的mlf文件
├── obj                               #各子系统部件的子ninja文件
└── toolchain.ninja                   #编译工具链
  • _post_target_generate()

源码:

def _post_target_generate(self):
    self._run_phase(BuildPhase.POST_TARGET_GENERATE)

无参数解析

  • _pre_target_compilation()

源码:

def _pre_target_compilation(self):
    self._run_phase(BuildPhase.PRE_TARGET_COMPILATION)

无参数解析

  • 30
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
#### Running command: "make -j16 -l16" in "/home/wangyize/catkin_racecar/build" #### [ 0%] Built target std_msgs_generate_messages_lisp [ 0%] Built target std_msgs_generate_messages_eus [ 5%] Built target serial [ 5%] Built target std_msgs_generate_messages_py [ 5%] Built target std_msgs_generate_messages_nodejs [ 5%] Built target std_msgs_generate_messages_cpp [ 7%] Built target ackermann_cmd_mux_gencfg make[2]: *** 没有规则可制作目标“/usr/lib/x86_64-linux-gnu/libopencv_calib3d.so.4.2.0”,由“/home/wangyize/catkin_racecar/devel/lib/racecar_gazebo/findLine” 需求。 停止。 [ 7%] Built target nav_msgs_generate_messages_py make[1]: *** [CMakeFiles/Makefile2:3572:racecar/racecar_gazebo/CMakeFiles/findLine.dir/all] 错误 2 make[1]: *** 正在等待未完成的任务.... [ 8%] Built target hokuyo_node_gencfg [ 11%] Built target joy_node [ 14%] Built target libhokuyo [ 14%] Built target rosgraph_msgs_generate_messages_lisp [ 14%] Built target nodelet_generate_messages_eus [ 14%] Built target roscpp_generate_messages_lisp [ 14%] Built target nodelet_generate_messages_lisp [ 14%] Built target rosgraph_msgs_generate_messages_eus [ 14%] Built target rosgraph_msgs_generate_messages_py [ 14%] Built target _vesc_msgs_generate_messages_check_deps_VescState [ 14%] Built target _ackermann_msgs_generate_messages_check_deps_AckermannDriveStamped [ 14%] Built target _ackermann_msgs_generate_messages_check_deps_AckermannDrive [ 14%] Built target _vesc_msgs_generate_messages_check_deps_VescStateStamped make: *** [Makefile:141:all] 错误 2 Invoking "make -j16 -l16" failed
06-10

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值