build.gn文件中 public external deps
时间: 2024-09-29 07:14:18 浏览: 27
`build.gn` 文件中的 `public external deps` 是一个GN(Genie Build System,Google的一种构建系统)语法,用于管理项目依赖。`public` 表示这些依赖对外部用户(例如其他模块或库)也是可见的,而 `external` 指的是这些依赖是非内部的,通常是从外部仓库获取的。
当你在 `build.gn` 中添加 `public external deps`,你是在声明项目需要使用到的第三方库或者其他外部资源。这些依赖会通过`gn gen` 或 `ninja` 构建工具下载并链接到你的项目中。比如:
```gn
# 示例
public externals {
dependency("openssl", {
url = "https://example.com/openssl.tar.gz",
sha256 = "0123456789abcdef0123456789abcdef",
});
}
```
这里,`openssl` 是依赖名,`url` 是依赖库的下载地址,`sha256` 是文件校验和,用于验证下载的库是否完整无损。
相关问题
解读下列编译报错:[OHOS INFO] ERROR at //build/templates/cxx/cxx.gni:242:7: Script returned non-zero exit code. [OHOS INFO] exec_script(external_deps_script, arguments) [OHOS INFO] ^---------- [OHOS INFO] Current dir: /home/huangjianli/kh3.2/out/khdvk_rk3568_a/ [OHOS INFO] Command: /usr/bin/env /home/huangjianli/kh3.2/build/templates/common/external_deps_handler.py --external-deps eventhandler:libeventhandler ces_standard:cesfwk_innerkits hiviewdfx_hilog_native:libhilog --parts-src-flag-file build_configs/parts_src_flag.json --external-deps-temp-file gen/kaihong/communication/kh_iotsdk/src/bonding/kh_iotsdk__bondingtest_external_deps_temp.json --sdk-base-dir ../../sdk/ohos-arm --sdk-dir-name sdk/ohos-arm --current-toolchain //build/toolchain/ohos:ohos_clang_arm --innerkits-adapter-info-file ../../build/ohos/inner_kits_adapter.json [OHOS INFO] Returned 1 and printed out: [OHOS INFO] [OHOS INFO] file '../../sdk/ohos-arm/ces_standard/sdk_info.json' doesn't exist. [OHOS INFO] [OHOS INFO] stderr: [OHOS INFO] [OHOS INFO] Traceback (most recent call last): [OHOS INFO] File "/home/huangjianli/kh3.2/build/templates/common/external_deps_handler.py", line 248, in <module> [OHOS INFO] sys.exit(main()) [OHOS INFO] File "/home/huangjianli/kh3.2/build/templates/common/external_deps_handler.py", line 214, in main [OHOS INFO] sdk_module_info, adapted_ok = _get_external_module_from_sdk( [OHOS INFO] File "/home/huangjianli/kh3.2/build/templates/common/external_deps_handler.py", line 73, in _get_external_module_from_sdk [OHOS INFO] raise Exception("part '{}' doesn't exist in sdk modules.".format( [OHOS INFO] Exception: part 'ces_standard' doesn't exist in sdk modules. [OHOS INFO] [OHOS INFO] See //kaihong/communication/kh_iotsdk/src/bonding/BUILD.gn:16:1: whence it was called. [OHOS INFO] ohos_executable("bondingtest") { [OHOS INFO] ^------------------------------- [OHOS INFO] See //kaihong/communication/kh_iotsdk/BUILD.gn:123:7: which caused the file to be included. [OHOS INFO] "//kaihong/communication/kh_iotsdk/src/bonding:bondingtest", [OHOS INFO] ^----------------------------------------------------------
这段编译报错是在进行华为开发者系统(OHOS)的编译过程中出现的。报错信息显示在编译 //kaihong/communication/kh_iotsdk/src/bonding/BUILD.gn 文件时,执行了 external_deps_handler.py 脚本,其中 ces_standard 部分没有在 OHOS 的 SDK 模块中找到,导致脚本执行失败。建议检查相关的 SDK 模块是否正确安装,或者在对应的 BUILD.gn 文件中修改依赖关系。
CLEAN_OBJS_OTHER += $(TARGET).elf $(TARGET).map $(TARGET).bin $(TARGET).dump $(TARGET).dasm \ $(TARGET).srec $(TARGET).hex $(TARGET).verilog openocd.log $(ALL_DEPS) $(ALL_GCNOS)
这也是一个Makefile文件中的语句,将一系列文件名添加到CLEAN_OBJS_OTHER变量中,这些文件名包括编译生成的文件(.elf, .map, .bin, .dump, .dasm, .srec, .hex, .verilog),以及一些其他文件(openocd.log, 所有的依赖文件ALL_DEPS, 所有的gcno文件ALL_GCNOS)。这样做的目的是为了在运行清理操作时,将这些文件一并删除,保持目录的整洁和清晰。