精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

移植BehaviorTree.CPP到OpenHarmony標準系統之一

系統 OpenHarmony
本篇將分享兩種移植方式,為 BehaviorTree.CPP 編寫BUILD.gn 進行Rom集成,移植后編譯出來的so和可執行文件打包進入固件的方法,移植相關的文件ohos.build修改為bundle.json,ohos.build不再使用。

想了解更多關于開源的內容,請訪問:

51CTO 開源基礎軟件社區

https://ost.51cto.com

1、為BehaviorTree.CPP編寫BUILD.gn進行Rom集成

  • Rom集成筆者開發環境:
  • wsl2+ubuntu18.04
  • OpenHarmony 3.2 release 源碼
  • 潤和大禹200開發板

2、修改build/subsystem_config.json,新增子系統behaviortree定義

在源碼/build/subsystem_config.json中增加子系統behaviortree。

"behaviortree": {
    "path": "third_party/behaviortree",
    "name": "behaviortree"
  }

3、修改vendor/hihope/rk3568/config.json文件將behaviortree添加至rk3568開發板

{
      "subsystem": "behaviortree",
      "components": [
        {
          "component": "behaviortree",
          "features": []
        }
      ]
    }

4、在OpenHarmony標準系統源碼下third_party下放置BehaviorTree.CPP源碼

  • BehaviorTree.CPP 源碼版本為4.1.1 :https://github.com/BehaviorTree/BehaviorTree.CPP/tree/4.1.1。
  • 并且文件夾名稱修改為behaviortree。

5、third_party/behaviortree目錄下添加bundle.json文件

  • 特別說明:ohos.build不再使用,OpenHarmony源碼中全部使用bundle.json。
  • bundle.json文件:
{
  "name": "@ohos/behaviortree",
  "description": "",
  "version": "",
  "license": "",
  "publishAs": "",
  "segment": {
      "destPath": "third_party/behaviortree"
  },
  "dirs": {},
  "scripts": {},
  "readmePath": {
  },
  "component": {
      "name": "behaviortree",
      "subsystem": "behaviortree",
      "syscap": [],
      "features": [],
      "adapted_system_type": [],
      "rom": "",
      "ram": "",
      "deps": {
          "components": [],
          "third_party": []
      },
      "build": {
          "sub_component": [
            "http://third_party/behaviortree:lexy_file",
            "http://third_party/behaviortree:bt_sample_nodes",
            "http://third_party/behaviortree:behaviortree_cpp",
            "http://third_party/behaviortree:dummy_nodes_dyn",
            "http://third_party/behaviortree:crossdoor_nodes_dyn",
            "http://third_party/behaviortree:movebase_node_dyn",
            "http://third_party/behaviortree:t01_build_your_first_tree",
            "http://third_party/behaviortree:t02_basic_ports",
            "http://third_party/behaviortree:t03_generic_ports",
            "http://third_party/behaviortree:t05_crossdoor",
            "http://third_party/behaviortree:t04_reactive_sequence",
            "http://third_party/behaviortree:t06_subtree_port_remapping",
            "http://third_party/behaviortree:t07_load_multiple_xml",
            "http://third_party/behaviortree:t08_additional_node_args",
            "http://third_party/behaviortree:t09_scripting",
            "http://third_party/behaviortree:t10_observer",
            "http://third_party/behaviortree:t11_replace_rules",
            "http://third_party/behaviortree:ex01_wrap_legacy",
            "http://third_party/behaviortree:ex02_runtime_ports",
            "http://third_party/behaviortree:ex03_ncurses_manual_selector",
            "http://third_party/behaviortree:ex04_waypoints"
          ],
          "inner_kits": [],
          "test": []
      }
  }
}

6、BehaviorTree.CPP編譯gn化,在third_party/behaviortree下添加BUILD.gn腳本文件

  • third_party/behaviortree/BUILD.gn配置的模塊有
  • so
  • libbehaviortree_cpp.z.so
  • libmovebase_node_dyn.z.so
  • libcrossdoor_nodes_dyn.z.so
  • libdummy_nodes_dyn.z.so
  • .a
  • liblexy_file.a
  • libbt_sample_nodes.a
  • 可執行文件
  • t01_build_your_first_tree
  • t02_basic_ports
  • t03_generic_ports
  • t04_reactive_sequence
  • t05_crossdoor
  • t06_subtree_port_remapping
  • t07_load_multiple_xml
  • t08_additional_node_args
  • t09_scripting
  • t10_observer
  • t11_replace_rules
  • ex01_wrap_legacy
  • ex02_runtime_ports
  • ex03_ncurses_manual_selector
  • ex04_waypoints
  • 模塊之間的依賴關系
  • libbehaviortree_cpp.z.so依賴lexy_file.a
  • libcrossdoor_nodes_dyn.z.so依賴libbehaviortree_cpp.z.so
  • libmovebase_node_dyn.z.so依賴libbehaviortree_cpp.z.so
  • 所有的可執行文件都依賴libbt_sample_nodes.a和libbehaviortree_cpp.z.so
  • third_party/behaviortree/BUILD.gn文件如下:
import("http://build/ohos.gni")  
##############################################################################

# 公共配置

config("public_config"){
    ldflags = [
       #"-lstdc++",
       #用-lc++替代-lstdc++
       "-lc++",
       "-Wl",
       "-lm",
       "-lc",
       "-lpthread",
    ]

}
##############################################################################

# liblexy_file.a

config("lexy_file_config"){
    #cflags_cc是用來存儲專門針對 C++ 語言編譯器的選項,只會被 C++ 編譯器使用。
    cflags_cc = [
       "-O3",
       "-DNDEBUG",  
       "-Wpedantic", 
       "-pedantic-errors", 
       "-Werror", 
       "-Wall", 
       "-Wextra", 
       "-Wconversion", 
       "-Wsign-conversion", 
       "-Wno-parentheses", 
       "-Wno-unused-local-typedefs", 
       "-Wno-array-bounds", 
       "-Wno-maybe-uninitialized", 
       "-Wno-restrict", 
       "-std=gnu++20",
    ]
}

ohos_static_library("lexy_file") {
    output_name = "lexy_file" # 可選,模塊輸出名

    sources = [
         "http://third_party/behaviortree/3rdparty/lexy/src/input/file.cpp",
    ]

    defines = [
    ]

    configs = [ 
         ":lexy_file_config", 
         ":public_config",
    ] 

    include_dirs = [
         "3rdparty/lexy/include",
    ]

    part_name = "behaviortree"

    subsystem_name = "behaviortree"
}

##############################################################################

# libbt_sample_nodes.a

config("bt_sample_nodes_config"){
    #cflags_cc是用來存儲專門針對 C++ 語言編譯器的選項,只會被 C++ 編譯器使用。
     cflags_cc = [
        "-O3", 
        "-DNDEBUG",    
        "-Wpedantic",   
        "-std=gnu++17",

        # 為了消除編譯報錯添加的
        "-fexceptions",
        "-frtti",
        "-Wno-unused-function",
     ]
}

ohos_static_library("bt_sample_nodes") {
    sources = [
        "sample_nodes/crossdoor_nodes.cpp",
        "sample_nodes/dummy_nodes.cpp",
        "sample_nodes/movebase_node.cpp",
    ]

    defines = [
    ]

    configs = [ 
         ":bt_sample_nodes_config", 
         ":public_config",
    ] 

    include_dirs = [
         "include",
         "sample_nodes"
    ]

    part_name = "behaviortree"

    subsystem_name = "behaviortree"
}

##############################################################################

# libbehaviortree_cpp.so

config("behaviortreecpp_config"){
    cflags_cc = [
        # 為了編譯libbehaviortree_cpp.so原生庫中添加的編譯器標志
        "-O3", 
        "-DNDEBUG",  
        "-fPIC",    
        "-Wpedantic",  
        "-Wall",  
        "-Wextra",  
        "-std=gnu++20",

        # 為了消除shared_library.cpp編譯報錯添加-fexceptions
        "-fexceptions",
        "-frtti",
        "-Wno-deprecated-volatile",
        "-Wno-unused-lambda-capture",
    ]

    include_dirs = [
         ".",
         "include",
         "3rdparty",
         "3rdparty/lexy/include",
    ]

}

ohos_shared_library("behaviortree_cpp") {
    output_name = "behaviortree_cpp" # 可選,模塊輸出名

    sources = [
        "src/action_node.cpp",
        "src/basic_types.cpp",
        "src/behavior_tree.cpp",
        "src/blackboard.cpp",
        "src/bt_factory.cpp",
        "src/decorator_node.cpp",
        "src/condition_node.cpp",
        "src/control_node.cpp",
        "src/shared_library.cpp",
        "src/tree_node.cpp",
        "src/script_parser.cpp",
        "src/json_export.cpp",
        "src/xml_parsing.cpp",
        "src/actions/test_node.cpp",
        "src/decorators/inverter_node.cpp",
        "src/decorators/repeat_node.cpp",
        "src/decorators/retry_node.cpp",
        "src/decorators/subtree_node.cpp",
        "src/decorators/delay_node.cpp",
        "src/controls/if_then_else_node.cpp",
        "src/controls/fallback_node.cpp",
        "src/controls/parallel_node.cpp",
        "src/controls/reactive_sequence.cpp",
        "src/controls/reactive_fallback.cpp",
        "src/controls/sequence_node.cpp",
        "src/controls/sequence_star_node.cpp",
        "src/controls/switch_node.cpp",
        "src/controls/while_do_else_node.cpp",
        "src/loggers/bt_cout_logger.cpp",
        "src/loggers/bt_file_logger.cpp",
        "src/loggers/bt_minitrace_logger.cpp",
        "src/loggers/bt_observer.cpp",
        "3rdparty/tinyxml2/tinyxml2.cpp",
        "3rdparty/minitrace/minitrace.cpp",
        "src/shared_library_UNIX.cpp",
    ]

    defines = [
        "LEXY_HAS_UNICODE_DATABASE=1",
        "behaviortree_cpp_EXPORTS",
    ]

    configs = [ 
         ":behaviortreecpp_config", 
         ":public_config",
    ] 

    deps = [
         "http://third_party/behaviortree:lexy_file",
    ]
    
    install_enable = true
    
    install_images = [
         "system",
         "ramdisk",
         "updater",
    ]

    part_name = "behaviortree"

    subsystem_name = "behaviortree"

}

##############################################################################

# libdummy_nodes_dyn.so

config("dummy_nodes_dyn_config"){
    cflags_cc = [
        # 為了編譯libbehaviortree_cpp.so原生庫中添加的編譯器標志
        "-O3", 
        "-DNDEBUG",  
        "-fPIC",    
        "-Wpedantic",   
        "-std=gnu++17",

        # 為了消除shared_library.cpp編譯報錯添加-fexceptions
        "-fexceptions",
        "-frtti",
        "-Wno-deprecated-volatile",
        "-Wno-unused-lambda-capture",
    ]

    include_dirs = [
         "include",
         "sample_nodes"
    ]

}

ohos_shared_library("dummy_nodes_dyn") {
    
    output_name = "dummy_nodes_dyn" # 可選,模塊輸出名

    sources = [
        "sample_nodes/dummy_nodes.cpp",
    ]

    defines = [
        "BT_PLUGIN_EXPORT",
        "dummy_nodes_dyn_EXPORTS",
    ]

    configs = [ 
         ":dummy_nodes_dyn_config", 
         ":public_config",
    ] 

    deps = [
        "http://third_party/behaviortree:behaviortree_cpp",
    ]

    install_enable = true
    
    install_images = [
         "system",
         "ramdisk",
         "updater",
    ]
    
    part_name = "behaviortree"

    subsystem_name = "behaviortree"

}

##############################################################################

# libcrossdoor_nodes_dyn.so

config("crossdoor_nodes_dyn_config"){
    cflags_cc = [
        # 為了編譯libbehaviortree_cpp.so原生庫中添加的編譯器標志
        "-O3", 
        "-DNDEBUG",  
        "-fPIC",    
        "-Wpedantic",   
        "-std=gnu++17",

        # 為了消除shared_library.cpp編譯報錯添加-fexceptions
        "-fexceptions",
        "-frtti",
        "-Wno-deprecated-volatile",
        "-Wno-unused-lambda-capture",
    ]

    include_dirs = [
         "include",
         "sample_nodes"
    ]

}

ohos_shared_library("crossdoor_nodes_dyn") {
    
    output_name = "crossdoor_nodes_dyn" # 可選,模塊輸出名

    sources = [
        "sample_nodes/crossdoor_nodes.cpp",
    ]

    defines = [
        "BT_PLUGIN_EXPORT",
        "crossdoor_nodes_dyn_EXPORTS",
    ]

    configs = [ 
         ":crossdoor_nodes_dyn_config", 
         ":public_config",
    ] 

    deps = [
        "http://third_party/behaviortree:behaviortree_cpp",
    ]
    
    install_enable = true
    
    install_images = [
         "system",
         "ramdisk",
         "updater",
    ]

    part_name = "behaviortree"

    subsystem_name = "behaviortree"

}

##############################################################################

# libmovebase_node_dyn.so

config("movebase_node_dyn_config"){
    cflags_cc = [
        # 為了編譯libbehaviortree_cpp.so原生庫中添加的編譯器標志
        "-O3", 
        "-DNDEBUG",  
        "-fPIC",    
        "-Wpedantic",   
        "-std=gnu++17",

        # 為了消除shared_library.cpp編譯報錯添加-fexceptions
        "-fexceptions",
        "-frtti",
        "-Wno-deprecated-volatile",
        "-Wno-unused-lambda-capture",
    ]

    include_dirs = [
         "include",
         "sample_nodes"
    ]

}

ohos_shared_library("movebase_node_dyn") {
    
    output_name = "movebase_node_dyn" # 可選,模塊輸出名

    sources = [
        "sample_nodes/movebase_node.cpp",
    ]

    defines = [
        "BT_PLUGIN_EXPORT",
        "movebase_node_dyn_EXPORTS",
    ]

    configs = [ 
         ":movebase_node_dyn_config", 
         ":public_config",
    ] 

    deps = [
        "http://third_party/behaviortree:behaviortree_cpp",
    ]

    install_enable = true
    
    install_images = [
         "system",
         "ramdisk",
         "updater",
    ]
    
    part_name = "behaviortree"

    subsystem_name = "behaviortree"

}

##############################################################################

# t01_build_your_first_tree

config("executable_public_config"){
    cflags_cc = [
        # 為了編譯libbehaviortree_cpp.so原生庫中添加的編譯器標志
        "-O3", 
        "-DNDEBUG",   
        "-Wpedantic",   
        "-std=gnu++17",

        # 為了消除shared_library.cpp編譯報錯添加-fexceptions
        "-fexceptions",
        "-frtti",
        "-Wno-deprecated-volatile",
        "-Wno-unused-lambda-capture",
    ]

    include_dirs = [
         "include",
         "sample_nodes"
    ]

}

ohos_executable("t01_build_your_first_tree") {
    
    output_name = "t01_build_your_first_tree" # 可選,模塊輸出名

    sources = [
        "examples/t01_build_your_first_tree.cpp",
    ]

    configs = [ 
         ":executable_public_config", 
         ":public_config",
    ] 

    deps = [
        "http://third_party/behaviortree:behaviortree_cpp",
        "http://third_party/behaviortree:bt_sample_nodes",
    ]
    
    install_enable = true
    
    install_images = [
         "system",
         "ramdisk",
         "updater",
    ]

    part_name = "behaviortree"

    subsystem_name = "behaviortree"

}

##############################################################################

# t02_basic_ports

ohos_executable("t02_basic_ports") {
    
    output_name = "t02_basic_ports" # 可選,模塊輸出名

    sources = [
        "examples/t02_basic_ports.cpp",
    ]

    configs = [ 
         ":executable_public_config", 
         ":public_config",
    ] 

    deps = [
        "http://third_party/behaviortree:behaviortree_cpp",
        "http://third_party/behaviortree:bt_sample_nodes",
    ]

    install_enable = true
    
    install_images = [
         "system",
         "ramdisk",
         "updater",
    ]
    
    part_name = "behaviortree"

    subsystem_name = "behaviortree"

}

##############################################################################

# t03_generic_ports

ohos_executable("t03_generic_ports") {
    
    output_name = "t03_generic_ports" # 可選,模塊輸出名

    sources = [
        "examples/t03_generic_ports.cpp",
    ]

    configs = [ 
         ":executable_public_config", 
         ":public_config",
    ] 

    deps = [
        "http://third_party/behaviortree:behaviortree_cpp",
        "http://third_party/behaviortree:bt_sample_nodes",
    ]

    install_enable = true
    
    install_images = [
         "system",
         "ramdisk",
         "updater",
    ]

    part_name = "behaviortree"

    subsystem_name = "behaviortree"

}

##############################################################################

# t04_reactive_sequence

ohos_executable("t04_reactive_sequence") {
    
    output_name = "t04_reactive_sequence" # 可選,模塊輸出名

    sources = [
        "examples/t04_reactive_sequence.cpp",
    ]

    configs = [ 
         ":executable_public_config", 
         ":public_config",
    ] 

    deps = [
        "http://third_party/behaviortree:behaviortree_cpp",
        "http://third_party/behaviortree:bt_sample_nodes",
    ]

    install_enable = true
    
    install_images = [
         "system",
         "ramdisk",
         "updater",
    ]
    
    part_name = "behaviortree"

    subsystem_name = "behaviortree"

}

##############################################################################

# t05_crossdoor

ohos_executable("t05_crossdoor") {
    
    output_name = "t05_crossdoor" # 可選,模塊輸出名

    sources = [
        "examples/t05_crossdoor.cpp",
    ]

    configs = [ 
         ":executable_public_config", 
         ":public_config",
    ] 

    deps = [
        "http://third_party/behaviortree:behaviortree_cpp",
        "http://third_party/behaviortree:bt_sample_nodes",
    ]

    install_enable = true
    
    install_images = [
         "system",
         "ramdisk",
         "updater",
    ]
    
    part_name = "behaviortree"

    subsystem_name = "behaviortree"

}

##############################################################################

# t06_subtree_port_remapping

ohos_executable("t06_subtree_port_remapping") {
    
    output_name = "t06_subtree_port_remapping" # 可選,模塊輸出名

    sources = [
        "examples/t06_subtree_port_remapping.cpp",
    ]

    configs = [ 
         ":executable_public_config", 
         ":public_config",
    ] 

    deps = [
        "http://third_party/behaviortree:behaviortree_cpp",
        "http://third_party/behaviortree:bt_sample_nodes",
    ]

    install_enable = true
    
    install_images = [
         "system",
         "ramdisk",
         "updater",
    ]
    
    part_name = "behaviortree"

    subsystem_name = "behaviortree"

}

##############################################################################

# t07_load_multiple_xml

ohos_executable("t07_load_multiple_xml") {
    
    output_name = "t07_load_multiple_xml" # 可選,模塊輸出名

    sources = [
        "examples/t07_load_multiple_xml.cpp",
    ]

    configs = [ 
         ":executable_public_config", 
         ":public_config",
    ] 

    deps = [
        "http://third_party/behaviortree:behaviortree_cpp",
        "http://third_party/behaviortree:bt_sample_nodes",
    ]

    install_enable = true
    
    install_images = [
         "system",
         "ramdisk",
         "updater",
    ]
    
    part_name = "behaviortree"

    subsystem_name = "behaviortree"

}

##############################################################################

# t08_additional_node_args

ohos_executable("t08_additional_node_args") {
    
    output_name = "t08_additional_node_args" # 可選,模塊輸出名

    sources = [
        "examples/t08_additional_node_args.cpp",
    ]

    configs = [ 
         ":executable_public_config", 
         ":public_config",
    ] 

    deps = [
        "http://third_party/behaviortree:behaviortree_cpp",
        "http://third_party/behaviortree:bt_sample_nodes",
    ]

    install_enable = true
    
    install_images = [
         "system",
         "ramdisk",
         "updater",
    ]
    
    part_name = "behaviortree"

    subsystem_name = "behaviortree"

}

##############################################################################

# t09_scripting

ohos_executable("t09_scripting") {
    
    output_name = "t09_scripting" # 可選,模塊輸出名

    sources = [
        "examples/t09_scripting.cpp",
    ]

    configs = [ 
         ":executable_public_config", 
         ":public_config",
    ] 

    deps = [
        "http://third_party/behaviortree:behaviortree_cpp",
        "http://third_party/behaviortree:bt_sample_nodes",
    ]

    install_enable = true
    
    install_images = [
         "system",
         "ramdisk",
         "updater",
    ]
    
    part_name = "behaviortree"

    subsystem_name = "behaviortree"

}

##############################################################################

# t10_observer

config("t10_observer_config"){
    cflags_cc = [
        # 為了編譯libbehaviortree_cpp.so原生庫中添加的編譯器標志
        "-O3", 
        "-DNDEBUG",   
        "-Wpedantic",   
        "-std=gnu++17",

        # 為了消除shared_library.cpp編譯報錯添加-fexceptions
        "-fexceptions",
        "-frtti",
        "-Wno-deprecated-volatile",
        "-Wno-unused-lambda-capture",
        "-Wno-unused-variable",
    ]

    include_dirs = [
         "include",
         "sample_nodes"
    ]

}

ohos_executable("t10_observer") {
    
    output_name = "t10_observer" # 可選,模塊輸出名

    sources = [
        "examples/t10_observer.cpp",
    ]

    configs = [ 
         ":t10_observer_config", 
         ":public_config",
    ] 

    deps = [
        "http://third_party/behaviortree:behaviortree_cpp",
        "http://third_party/behaviortree:bt_sample_nodes",
    ]

    install_enable = true
    
    install_images = [
         "system",
         "ramdisk",
         "updater",
    ]
    
    part_name = "behaviortree"

    subsystem_name = "behaviortree"

}

##############################################################################

# t11_replace_rules

ohos_executable("t11_replace_rules") {
    
    output_name = "t11_replace_rules" # 可選,模塊輸出名

    sources = [
        "examples/t11_replace_rules.cpp",
    ]

    configs = [ 
         ":executable_public_config", 
         ":public_config",
    ] 

    deps = [
        "http://third_party/behaviortree:behaviortree_cpp",
        "http://third_party/behaviortree:bt_sample_nodes",
    ]

    install_enable = true
    
    install_images = [
         "system",
         "ramdisk",
         "updater",
    ]
    
    part_name = "behaviortree"

    subsystem_name = "behaviortree"

}

##############################################################################

# ex01_wrap_legacy

ohos_executable("ex01_wrap_legacy") {
    
    output_name = "ex01_wrap_legacy" # 可選,模塊輸出名

    sources = [
        "examples/ex01_wrap_legacy.cpp",
    ]

    configs = [ 
         ":executable_public_config", 
         ":public_config",
    ] 

    deps = [
        "http://third_party/behaviortree:behaviortree_cpp",
        "http://third_party/behaviortree:bt_sample_nodes",
    ]

    install_enable = true
    
    install_images = [
         "system",
         "ramdisk",
         "updater",
    ]
    
    part_name = "behaviortree"

    subsystem_name = "behaviortree"

}

##############################################################################

# ex02_runtime_ports

ohos_executable("ex02_runtime_ports") {
    
    output_name = "ex02_runtime_ports" # 可選,模塊輸出名

    sources = [
        "examples/ex02_runtime_ports.cpp",
    ]

    configs = [ 
         ":executable_public_config", 
         ":public_config",
    ] 

    deps = [
        "http://third_party/behaviortree:behaviortree_cpp",
        "http://third_party/behaviortree:bt_sample_nodes",
    ]

    install_enable = true
    
    install_images = [
         "system",
         "ramdisk",
         "updater",
    ]
    
    part_name = "behaviortree"

    subsystem_name = "behaviortree"

}

##############################################################################

# ex03_ncurses_manual_selector

ohos_executable("ex03_ncurses_manual_selector") {
    
    output_name = "ex03_ncurses_manual_selector" # 可選,模塊輸出名

    sources = [
        "examples/ex03_ncurses_manual_selector.cpp",
    ]

    configs = [ 
         ":executable_public_config", 
         ":public_config",
    ] 

    deps = [
        "http://third_party/behaviortree:behaviortree_cpp",
        "http://third_party/behaviortree:bt_sample_nodes",
    ]

    install_enable = true
    
    install_images = [
         "system",
         "ramdisk",
         "updater",
    ]
    
    part_name = "behaviortree"

    subsystem_name = "behaviortree"

}

##############################################################################

# ex04_waypoints

ohos_executable("ex04_waypoints") {
    
    output_name = "ex04_waypoints" # 可選,模塊輸出名

    sources = [
        "examples/ex04_waypoints.cpp",
    ]

    configs = [ 
         ":executable_public_config", 
         ":public_config",
    ] 

    deps = [
        "http://third_party/behaviortree:behaviortree_cpp",
        "http://third_party/behaviortree:bt_sample_nodes",
    ]

    install_enable = true
    
    install_images = [
         "system",
         "ramdisk",
         "updater",
    ]
    
    part_name = "behaviortree"

    subsystem_name = "behaviortree"

}

##############################################################################

7、對源碼進行增量編譯,推送編譯生成BehaviorTree.CPP的so以及可執行文件到開發板上,驗證編譯結果

(1)對源碼進行增量編譯

  • 推薦使用如下命令對對源碼進行增量編譯,編譯生成BehaviorTree.CPP的so以及可執行文件
./build.sh --product-name rk3568 --ccache --build-target=behaviortree --disable-post-build --disable-package-image --gn-args enable_notice_collection=false --gn-args load_test_config=false
  • 默認編譯的是32位,添加–target-cpu arm64參數編譯64位
--product-name rk3568 :表示編譯的產品是rk3568 (潤和大禹200)
--build-target=behaviortree :編譯子系統behaviortree

以下這些都是加快編譯速度的選項
--ccache --build-target=behaviortree --disable-post-build --disable-package-image --gn-args enable_notice_collection=false --gn-args load_test_config=false

(2)推送編譯生成BehaviorTree.CPP的so以及可執行文件到開發板上,驗證編譯結果

so和可執行文件在out\rk3568\behaviortree目錄下:

liblexy_file.a、libbt_sample_nodes.a等靜態庫文件在out\rk3568\obj\third_party\behaviortree目錄下。

1、通過與ohos版本匹配的hdc_std工具,將編譯生成的庫以及測試用的可執行文件推送到開發板system/lib (lib64)

  • 推送到開發板system/lib (lib64),是因為運行需要鏈接該目錄下的libc++.so
  • 注意,不再是用hdc_std,改成了hdc
hdc shell               
mount -o remount,rw /	    ## 重新加載系統為可讀寫
chmod 777 t02_basic_ports
./t02_basic_ports

8、對源碼進行增量編譯全量編譯,燒錄固件驗證編譯結果。

  • 如果有將編譯生成BehaviorTree.CPP的so以及可執行文件打包到固件,隨固件燒錄到開發板的需求。推薦進行全量編譯,執行 ./build.sh --product-name rk3568 --ccache ,然后編譯燒錄固件到開發板上即可。
  • 編譯燒錄好固件到開發板后,so文件會在開發板system/lib(64位系統的話在system/lib64),可執行文件會在system/bin。
  • hdc shell進入開發板后,在任意目錄層級下執行可執行文件都可以。

  • 將編譯生成BehaviorTree.CPP的so以及可執行文件打包到固件,在上文third_party/behaviortree/BUILD.gn中已經添加相關代碼。
install_enable = true
    
    install_images = [
         "system",
         "ramdisk",
         "updater",
    ]

想了解更多關于開源的內容,請訪問:

51CTO 開源基礎軟件社區

https://ost.51cto.com

責任編輯:jianghua 來源: 51CTO 開源基礎軟件社區
相關推薦

2022-09-06 15:46:52

speexdsp鴻蒙

2022-09-07 15:08:58

操作系統鴻蒙

2022-09-13 16:10:15

鴻蒙操作系統

2022-09-16 15:01:37

操作系統技術鴻蒙

2022-09-15 15:21:22

操作系統鴻蒙

2022-09-14 15:28:19

操作系統鴻蒙

2023-12-29 08:45:40

Python3.8鴻蒙解釋器

2023-02-01 16:28:30

Linux內核鴻蒙

2022-10-12 15:14:08

開機動畫鴻蒙

2022-09-15 14:56:12

GDB調試鴻蒙

2022-04-02 20:45:04

Hi3516開發板操作系統鴻蒙

2021-09-16 15:04:28

鴻蒙HarmonyOS應用

2021-11-08 07:19:45

鴻蒙HarmonyOS應用

2021-11-23 15:35:05

鴻蒙HarmonyOS應用

2023-02-01 16:38:53

2022-06-21 11:30:22

littleVGL鴻蒙

2022-01-13 10:11:59

鴻蒙HarmonyOS應用

2021-08-06 15:09:22

鴻蒙HarmonyOS應用

2022-02-16 16:01:02

Hi3516開發板鴻蒙

2021-07-19 15:34:05

鴻蒙HarmonyOS應用
點贊
收藏

51CTO技術棧公眾號

精品国产31久久久久久| 在线中文字幕亚洲| 欧美色网一区二区| 国产一区二区三区在线免费| 午夜小视频免费| 毛片一区二区三区| 久久人人爽人人爽人人片av高请| 蜜桃无码一区二区三区| 午夜久久av| 欧美三区在线观看| 欧美日本视频在线观看| www.久久ai| 国产无遮挡一区二区三区毛片日本| 亚洲精品日韩激情在线电影| 国内自拍视频在线播放| 国产精品videosex极品| 久久精品国产亚洲精品| 免费在线观看成年人视频| 国产在线一区不卡| 欧美中文字幕一区二区三区 | 91情侣在线视频| 免费黄色av片| 国产精品久久久免费| 久久99久久亚洲国产| www.涩涩爱| 妖精视频一区二区三区 | 成人影视在线播放| 91色在线porny| 国产精品一区视频网站| 国产成人精品一区二区无码呦 | 国产精品视频免费在线| 老熟妇一区二区三区| 亚洲二区视频| 欧美激情乱人伦一区| 羞羞在线观看视频| 久久久久久久一区| 国内免费久久久久久久久久久| 91动漫免费网站| 一区二区三区四区在线看| 另类成人小视频在线| 欧美尤物巨大精品爽| 久久高清免费视频| 国产精品99免费看| 欧美高清在线播放| 黄色免费大全亚洲| 色婷婷综合中文久久一本| 丰满的少妇愉情hd高清果冻传媒 | 日韩亚洲欧美中文在线| 日本人亚洲人jjzzjjz| 国产日产精品_国产精品毛片| 亚洲国产精品中文| 午夜男人的天堂| 风间由美性色一区二区三区四区 | 欧美网站在线观看| 成年人观看网站| 在线成人av观看| 日韩欧美在线中文字幕| 国产成人亚洲精品无码h在线| 欧美性suv| 欧美亚洲国产一区二区三区va | 中文字幕日韩av综合精品| 一级片视频免费看| 欧洲乱码伦视频免费| 日韩中文字幕视频在线| 天天操夜夜操av| 欧美高清一区| 97精品国产91久久久久久| 伊人手机在线视频| 麻豆视频一区二区| 114国产精品久久免费观看| 欧美 日韩 国产 成人 在线 91 | 26uuu成人网| 国产综合网站| 午夜精品久久久久久久久久久久久| 国产区在线观看视频| 久久久久国产精品一区三寸| 国产精品夜色7777狼人| www.国产免费| 久久先锋影音av鲁色资源| 亚洲电影免费| 黄污视频在线观看| 91激情在线视频| 中文 日韩 欧美| 超碰成人福利| 亚洲午夜久久久久久久| 男人与禽猛交狂配| 香蕉亚洲视频| 成人精品在线视频| 亚洲欧美日本在线观看| 亚洲欧美综合色| 欧美精品一区二区三区三州| 成人精品一区二区三区电影| 日韩精品一区二区三区视频播放 | 一区二区三区中文| 26uuu日韩精品一区二区| 伊人网免费视频| 在线观看欧美日韩电影| 国产精品亚洲一区二区三区在线 | 久久先锋影音av| 亚洲午夜在线观看| 国产精品高颜值在线观看| 欧美网站大全在线观看| 国产极品一区二区| 无码一区二区三区视频| 午夜精品一区二区三区在线 | 日韩精品在线免费看| 蜜臀av性久久久久蜜臀aⅴ四虎 | 亚洲国产日韩欧美在线| 欧美有码在线观看| 国产高清在线观看视频| 国产嫩草影院久久久久| 国产亚洲黄色片| 在线视频成人| 亚洲人成毛片在线播放| 久久久无码一区二区三区| 日本欧美在线看| 黄色国产精品一区二区三区| av黄色在线| 欧美色大人视频| 91中文字幕永久在线| 国产精品久久| 91色p视频在线| 日韩子在线观看| 色哟哟在线观看一区二区三区| 黄色国产在线视频| 欧美~级网站不卡| 成人h视频在线观看播放| 国产女人在线视频| 一本久久精品一区二区| 黄色av网址在线观看| 亚洲特级毛片| 俄罗斯精品一区二区| 快射视频在线观看| 欧美日本免费一区二区三区| 国产黄色大片免费看| 国产稀缺精品盗摄盗拍| 久久都是精品| 久久伊人一区| 蜜桃av在线播放| 亚洲国产美女精品久久久久∴| 久久久久久免费观看| 国产jizzjizz一区二区| 菠萝蜜视频在线观看入口| 在线观看涩涩| 亚洲人成在线免费观看| 91精品国产高清一区二区三密臀| 99re热这里只有精品视频| 国产91在线免费| 午夜a一级毛片亚洲欧洲| 97av在线视频免费播放| 视频二区在线| 欧美视频在线观看一区| 国产精品三区在线观看| 国产精品18久久久久| www.国产在线视频| jizz性欧美23| 欧美一区二区.| 黄网在线观看| 欧美日韩一区二区三区四区五区| 久久精品在线观看视频| 国产成人免费视| av免费观看国产| 狠狠色狠狠色综合婷婷tag| 国产精品一区二区女厕厕| 免费在线午夜视频| 欧美成人精品3d动漫h| 一级免费在线观看| 国产亚洲午夜高清国产拍精品| 国产精品人人爽人人爽| 亚洲一区欧美| 免费在线国产精品| 天天综合在线观看| 高清一区二区三区日本久| 日本福利片高清在线观看| 欧美天天综合网| 久久久久黄色片| 久久久久久久久蜜桃| 亚洲一区二区蜜桃| 欧美freesex交免费视频| 久久久一本精品99久久精品66| 国产精品久久亚洲不卡| 欧美激情奇米色| 青青操视频在线| 91精品国产综合久久精品| 日韩三级小视频| 亚洲欧洲韩国日本视频| 538国产视频| 精品一二三四在线| 免费无码不卡视频在线观看| 日韩免费av| 久久精品二区| 国产亚洲久久| 国产成人精品一区二区三区| 欧美人与禽性xxxxx杂性| 亚洲视屏在线播放| 蜜桃av中文字幕| 欧美日本一道本| 国产免费一区二区三区四区五区| 一区二区三区产品免费精品久久75| 中文幕无线码中文字蜜桃| 国产传媒一区在线| 9l视频白拍9色9l视频| 99视频在线精品国自产拍免费观看| 一区二区三区四区五区精品| 人体久久天天| 999视频在线观看| 99re久久| 欧亚精品在线观看| 变态调教一区二区三区| 北条麻妃一区二区三区中文字幕| 天天av综合网| 精品久久久久久亚洲综合网| 国产精品久久久久久免费免熟| 色综合久久综合网97色综合 | 国产原创av在线| 亚洲精品91美女久久久久久久| 99国产精品一区二区三区| 欧洲视频一区二区| 国产又大又粗又爽| 亚洲va韩国va欧美va| 精品少妇一二三区| 亚洲情趣在线观看| 中国一级片在线观看| 中文字幕在线一区二区三区| 五月天综合视频| 久久女同精品一区二区| 朝桐光av一区二区三区| 成人午夜又粗又硬又大| 制服.丝袜.亚洲.中文.综合懂 | 亚洲一区二区三区xxx视频| 成人精品动漫| 国产精品爽黄69| 成人国产在线| 国产精品一区二区在线| 国产精品黄色片| 国产男女猛烈无遮挡91| 国产精品诱惑| 国产一区二区香蕉| 国产日韩在线观看视频| 亚洲自拍偷拍一区| 婷婷视频一区二区三区| 痴汉一区二区三区| 成人爽a毛片免费啪啪红桃视频| 国产传媒一区二区| 好吊妞视频这里有精品| 精品国产日本| 日韩欧美在线精品| 欧美午夜视频在线| 精品国产乱码久久久久久蜜坠欲下| 日韩区国产区| 91一区在线| 日本高清视频免费在线观看| 极品少妇一区二区三区| 男人揉女人奶房视频60分| 日日摸夜夜添夜夜添国产精品| 欧美一级裸体视频| 久久99九九99精品| 女人扒开腿免费视频app| 粉嫩嫩av羞羞动漫久久久| 成人无码www在线看免费| 久久综合精品国产一区二区三区| 国产高清一区二区三区四区| 中文字幕中文乱码欧美一区二区| 在线看的片片片免费| 亚洲国产欧美在线人成| 视频一区二区三区四区五区| 精品久久久久久久久久久久久久| 久久99国产综合精品免费| 91福利在线播放| 精品国产av一区二区| 日韩av网站大全| 最新国产在线观看| 欧美大片在线免费观看| 成人性生活视频| 国产在线不卡精品| 成人激情自拍| 无码免费一区二区三区免费播放| 亚洲综合色网| 国产中文字幕视频在线观看| 美女免费视频一区二区| 熟妇高潮一区二区| 亚洲国产高清在线| 国产乡下妇女做爰毛片| 欧美日韩在线播| 韩国av永久免费| 亚洲性日韩精品一区二区| av大片在线| 国产suv精品一区二区| 日韩有吗在线观看| 无遮挡亚洲一区| 国产欧美一级| 宇都宫紫苑在线播放| 欧美极品aⅴ影院| 日韩乱码一区二区| 3d动漫精品啪啪一区二区竹菊| 污污网站免费在线观看| 久久久精品免费| 色豆豆成人网| 国产免费一区| 综合在线一区| 一区二区三区视频在线观看免费| 99久久er热在这里只有精品15| 中文字幕求饶的少妇| 欧美日韩亚洲系列| 亚洲av无码国产综合专区| 中文字幕欧美在线| 蜜臀国产一区| 国产在线一区二区三区欧美| 综合视频在线| 网站在线你懂的| 亚洲国产精品精华液2区45| 日韩 欧美 综合| 欧美成人伊人久久综合网| 欧美一区二区三区| 国产精品久久在线观看| 亚洲成人一品| 99热自拍偷拍| 国产91精品免费| 青娱乐91视频| 欧美一区二区三区色| 免费a级在线播放| 国产精品视频xxxx| 精品国产91乱码一区二区三区四区 | www.av成人| 欧美日韩国产高清一区二区三区| 国产香蕉视频在线看| 青青久久av北条麻妃黑人| 欧美综合精品| 俄罗斯av网站| 91理论电影在线观看| 日韩黄色a级片| 亚洲国产精品字幕| 在线看片福利| 蜜桃视频成人| 久久亚洲色图| 欧美精品日韩在线| 欧美三级视频在线| 在线免费观看黄色网址| 国产一区视频在线播放| 欧美电影《睫毛膏》| 97人人爽人人| 亚洲精品写真福利| 亚洲国产精彩视频| 韩国精品久久久999| 欧美男男freegayvideosroom| 欧美二区在线视频| 国产亚洲视频系列| 中文字幕视频一区二区| 日韩中文字幕精品| vam成人资源在线观看| 成年在线观看视频| aaa亚洲精品| 国产精品视频一区在线观看| 在线视频国产日韩| av在线精品| 日韩网站在线免费观看| 久久丝袜美腿综合| 少妇无套内谢久久久久| 久久这里有精品视频| 大桥未久女教师av一区二区| 干日本少妇首页| 国产精品网站在线观看| 精品人妻一区二区三区三区四区 | 欧美日韩福利在线观看| 美日韩黄色大片| 欧美国产日韩在线播放| 亚洲少妇30p| 少妇一级淫片免费看| 国产精品69av| 亚洲免费二区| 日本japanese极品少妇| 在线精品观看国产| 91亚洲天堂| 久久久久久久久四区三区| 免费日本视频一区| 久久精品一级片| 亚洲人成绝费网站色www| 精品国模一区二区三区欧美 | 中文字幕黄色大片| 成人污视频在线观看| 国产男人搡女人免费视频| 欧美精品做受xxx性少妇| 天堂日韩电影| 亚洲AV无码久久精品国产一区| 欧美日韩国产中字| 黄色在线观看网站| 欧美日韩一区二区三| 国产成人一区二区精品非洲| 手机av免费观看| 欧美国产日韩一区二区在线观看| 国产精品欧美在线观看| 国产成人av片| 欧美日韩国产成人在线91| 国产精品论坛| 免费看啪啪网站| 欧美激情一区二区三区不卡 | 国产亚洲欧美日韩在线一区| wwwav网站| 国产美女搞久久| 久久一区亚洲|