精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

伊人精品久久| dj大片免费在线观看| 久久最新视频| 日韩亚洲欧美中文高清在线| а 天堂 在线| 97在线视频免费观看完整版| 久久久精品国产免费观看同学| 国产精品欧美日韩一区二区| 波多野结衣不卡视频| 麻豆精品99| 欧美日韩一区在线| 日韩国产成人无码av毛片| 嫩草在线播放| 国产东北露脸精品视频| 国产成人精品久久久| 日韩视频中文字幕在线观看| 亚洲丁香日韩| 欧美一区午夜精品| 无遮挡又爽又刺激的视频| а√天堂8资源在线官网| 国产亚洲一区字幕| 春色成人在线视频| 伊人久久成人网| 亚洲人妖在线| 久久视频中文字幕| 亚洲精品视频网址| 日韩大胆成人| 欧美电影精品一区二区| 亚洲 欧美 另类人妖| av日韩国产| 亚洲美女区一区| 欧美重口乱码一区二区| 秋霞av鲁丝片一区二区| 国产一区二区三区在线观看精品| 国产97色在线| 五月婷婷视频在线| 精品动漫3d一区二区三区免费版| 久久黄色av网站| 国内精品久久99人妻无码| aaa国产精品| 日韩欧美国产一区在线观看| 国产精品无码毛片| 先锋影音一区二区| 在线观看三级视频欧美| 欧美日韩亚洲一| 91在线三级| 一区二区三区精品久久久| 一区二区三区一级片| av女优在线| 欧美激情中文字幕一区二区| 麻豆久久久av免费| 香蕉视频免费看| 成人黄色777网| 99精彩视频| 亚洲国产成人一区二区| 国产剧情一区二区| 91文字幕巨乱亚洲香蕉| 99精品国产99久久久久久97| 精品一区二区久久| 91九色国产视频| 99精品在线视频观看| 国内成+人亚洲+欧美+综合在线| 国产精品欧美日韩久久| 伊人久久成人网| 久久91精品国产91久久小草| 国产又爽又黄的激情精品视频 | 农村妇女精品一二区| 毛片网站在线免费观看| 国产色一区二区| 婷婷五月色综合| 黄网站免费在线播放| 亚洲欧美视频在线观看视频| 久久久久久av无码免费网站下载| www红色一片_亚洲成a人片在线观看_| 亚洲精品日韩综合观看成人91| 久久久国内精品| 欧美男人天堂| 在线一区二区三区四区五区| 手机视频在线观看| 香蕉成人app| 亚洲国产成人精品女人久久久 | av网站在线观看不卡| 日本乱码一区二区三区不卡| 欧美性高潮在线| 91国产精品视频在线观看| 亚洲免费一区| 337p日本欧洲亚洲大胆精品| 91成年人网站| 香蕉综合视频| 97在线观看免费高清| 精品黑人一区二区三区| 精品一区二区三区视频| 国产精品久久国产三级国电话系列 | 9色在线视频网站| 亚洲人成影院在线观看| heyzo亚洲| 成人在线观看免费播放| 日韩欧美一二三区| wwwwxxxx国产| 婷婷亚洲综合| 38少妇精品导航| 中文字幕精品无| 国产馆精品极品| 欧美三级华人主播| 性爱视频在线播放| 色94色欧美sute亚洲线路二| 亚洲三级在线视频| 国产不卡av一区二区| 久久这里只有精品视频首页| 欧美一区二区激情视频| 国产资源在线一区| 欧美日韩在线高清| sm在线播放| 51精品国自产在线| 久久美女免费视频| 99热免费精品| 亚洲自拍在线观看| 成年人在线观看视频| 亚洲一区二区视频| 一道本在线免费视频| 国内视频在线精品| 久久人人爽人人爽爽久久| 狠狠人妻久久久久久综合| 国产成人精品网址| 亚洲欧美日韩另类精品一区二区三区 | 亚洲精品午夜| 伊人伊成久久人综合网小说 | 欧美天堂亚洲电影院在线观看| 国产成人短视频| 秋霞av鲁丝片一区二区| 一区二区在线观看不卡| 国产精品区在线| 国产成人影院| 国产91精品视频在线观看| 亚洲精品综合久久| 亚洲色图视频网| 日本激情综合网| 成人3d动漫在线观看| 日本高清视频精品| 特黄视频在线观看| 亚洲妇女屁股眼交7| 国产探花在线观看视频| 我不卡神马影院| 国产精品扒开腿做| 日本高清中文字幕二区在线| 天天操天天色综合| 中文字幕无码人妻少妇免费| 国产一区视频在线观看免费| 91国产丝袜在线放| 在线āv视频| 日韩一区二区视频| 欧美日韩在线国产| 国产精品88888| 国产专区在线视频| 伊色综合久久之综合久久| 欧美精品免费播放| 亚洲国产一二三区| 亚洲香肠在线观看| 国产一级伦理片| 国产欧美高清| 日韩高清国产一区在线观看| 成人mm视频在线观看| 日韩在线观看你懂的| 一级黄色大片免费观看| 《视频一区视频二区| 性久久久久久久久久久久久久| 香蕉av一区二区| 高清av免费一区中文字幕| 春色校园综合激情亚洲| 精品爽片免费看久久| 亚洲国产精品无码久久久| 国产精品欧美一区喷水| 女人高潮一级片| 欧美午夜不卡影院在线观看完整版免费| 亚洲在线第一页| 91超碰免费在线| 精品无人区太爽高潮在线播放| 亚洲中文字幕无码爆乳av| 综合色天天鬼久久鬼色| 天天躁日日躁狠狠躁av| 视频一区二区三区在线| 亚洲一区精彩视频| 51亚洲精品| 国产成人精品999| 免费a级毛片在线播放| 亚洲精品一区二区三区香蕉| 欧美brazzers| 亚洲综合一区二区精品导航| 欧美高清性xxxx| 久久精品99久久久| www.好吊操| 成人在线免费小视频| 亚洲最大av在线| 成人免费看黄| 欧美猛交ⅹxxx乱大交视频| 欧洲毛片在线| 欧美一级生活片| 国产一卡二卡三卡| 一区二区在线观看免费视频播放| 久久久亚洲av波多野结衣| 九九国产精品视频| 一区二区传媒有限公司| 国产精品国产一区| 久久精品99久久| 麻豆久久一区| 日韩美女视频中文字幕| 性欧美1819sex性高清大胸| 一本色道久久综合亚洲精品小说| 成人激情四射网| 欧美日韩精品一区二区三区蜜桃 | 国产一区观看| 亚洲三区四区| 日韩美脚连裤袜丝袜在线| 成人激情视频在线观看| 97se综合| 久久久久亚洲精品| 成人免费观看视频大全| 亚洲图片在区色| 无码精品黑人一区二区三区| 91精品中文字幕一区二区三区| 亚洲图片在线视频| 亚洲福利电影网| 久久人妻无码aⅴ毛片a片app| 91麻豆免费在线观看| 中文字幕乱视频| 国模无码大尺度一区二区三区| 91av俱乐部| 国产亚洲精品bv在线观看| 国产 欧美 日本| 五月激情综合| 一区二区三区四区视频在线| 精品国精品国产自在久国产应用| 精品999在线观看| a级日韩大片| 91久久国产自产拍夜夜嗨| 一区二区三区| 成人精品视频久久久久| 成人18视频在线观看| 国产精品爱啪在线线免费观看| 26uuu亚洲电影| 日本一区二区三区四区视频| 中文在线最新版地址| 91精品国产91久久久久久久久| 欧美另类tv| 欧美激情在线视频二区| 色婷婷av在线| 欧美精品videosex牲欧美| av观看在线| 欧美国产日本在线| 欧美videos另类精品| 欧美极品少妇xxxxⅹ裸体艺术 | 亚洲精品视频自拍| 欧美一区二区三区爽爽爽| 亚洲日本丝袜连裤袜办公室| 黑鬼狂亚洲人videos| 亚洲精品中文字幕乱码三区| 欧美成人手机视频| 亚洲一区二区三区美女| 国产乡下妇女做爰视频| 欧美日韩国产精品一区| 国产精品999在线观看| 日韩欧美在线免费观看| 日本视频免费观看| 精品污污网站免费看| 91无套直看片红桃| 欧美成人vps| 香港一级纯黄大片| 永久免费毛片在线播放不卡| 日本三级视频在线播放| 久久99热精品| 国产在线美女| 国产精品国产自产拍高清av水多| 福利精品一区| 97人人香蕉| 伊人久久大香线蕉| 伊人久久av导航| 韩国在线视频一区| 男人的天堂99| 精品在线观看免费| 中文字幕 欧美 日韩| 92精品国产成人观看免费| 少妇久久久久久久久久| 中文字幕亚洲不卡| 黄色小说在线观看视频| 91成人免费在线| 99精品免费观看| 亚洲欧美日韩网| 国产福利视频在线| 57pao成人永久免费视频| 青青国产精品| 久久久久高清| 一精品久久久| 37pao成人国产永久免费视频| 美国欧美日韩国产在线播放| 69xxx免费视频| 国产婷婷色一区二区三区在线| 少妇人妻丰满做爰xxx| 欧美性猛交xxxx乱大交极品| 国产毛片一区二区三区va在线| 日韩av网址在线观看| 欧美性天天影视| 欧美中文字幕在线播放| 久久精品一级| 日本公妇乱淫免费视频一区三区| 欧美日韩亚洲一区| 亚洲第一狼人区| 91美女片黄在线观看91美女| 欧美日韩午夜视频| 91国模大尺度私拍在线视频| 亚洲国产精品国自产拍久久| 深夜福利国产精品| 美女的胸无遮挡在线观看| 97se亚洲综合| 久久国产精品亚洲人一区二区三区| 日韩伦理在线免费观看| 韩国v欧美v日本v亚洲v| 自拍偷拍视频亚洲| 亚洲第一福利视频在线| 国产同性人妖ts口直男| 中文字幕亚洲情99在线| 亚洲国产福利| 国产精品入口免费| 在线观看日韩| 视频在线观看免费高清| 国产视频一区在线观看| 亚洲高清毛片一区二区| 日韩免费电影网站| 黄色网页在线免费观看| 国产精品欧美一区二区| 国产日韩视频在线| 久久久噜噜噜www成人网| 99久久国产综合精品女不卡 | 欧美性猛交丰臀xxxxx网站| 不卡的日韩av| 欧美另类第一页| 国产专区精品| 青青草原国产免费| 久久精品久久99精品久久| 怡红院一区二区三区| 91黄色免费版| 波多野结衣在线影院| 国产成人+综合亚洲+天堂| 国产成人ay| www.欧美日本| 国产拍欧美日韩视频二区| 青青国产在线视频| 在线播放国产一区二区三区| 欧美xxxxxx| 日韩国产欧美一区| 麻豆久久久久久久| 国产黄色片在线| 91精品国产综合久久福利| 黄色网页网址在线免费| 亚洲一区二区三区成人在线视频精品 | 欧美mv日韩mv亚洲| 国产黄色大片在线观看| 国产私拍一区| 国产精品一页| 波多野吉衣中文字幕| 在线精品视频小说1| 日本www在线| 91精品视频一区| 国产一区二区三区自拍| 影音先锋黄色资源| 一本久久a久久精品亚洲| 国产免费av在线| 成人免费淫片aa视频免费| 韩国亚洲精品| 亚洲专区区免费| 欧美性大战久久久久久久蜜臀| 欧美jizz18性欧美| 成人欧美一区二区| 国产精品入口| 国产18无套直看片| 制服丝袜成人动漫| 丁香花电影在线观看完整版| 蜜桃麻豆www久久国产精品| 另类的小说在线视频另类成人小视频在线 | 懂色av蜜臀av粉嫩av喷吹| 免费成人高清视频| 欧美黑人巨大videos精品| 香蕉视频网站入口| 亚洲美女免费在线| 少妇激情av一区二区| 国产欧亚日韩视频| 在线播放亚洲| 我不卡一区二区| 日韩免费性生活视频播放| 欧洲av不卡| 在线观看18视频网站| 91丨九色丨国产丨porny| 97精品人妻一区二区三区| 国模极品一区二区三区| 成人羞羞网站入口免费| 韩国三级视频在线观看| 在线中文字幕不卡| 丁香高清在线观看完整电影视频 | av电影在线观看网址| 成人情视频高清免费观看电影| 久久久国产精品一区二区中文|