okass 在版块 软件平台 中回复了话题 openwrt系统编译基础知识点 2年, 10个月前
2. [question]. WebRTC编译系统之GYP,gn和ninja you哪些区别
ninja 的官网在这里: https://ninja-build.org/
要完整编译 WebRTC ,只要在 src 目录执行下列命令:
-C 选项告诉 ninja ,进入 out/Release 目录来编译。所以,它等同于:
要编译某个模块,可以在 ninja 命令后跟模块名字(build.ninja文件中定义的构建目标,就像 Makefile 中的构建目标一样)。比如:gn 和 gni 文件都在源码树中,比如 src 目录。当执行 gn gen 时,gn 工具根据 gn 和 gni 生成 ninja 文件并将这些 ninja 文件放到指定的构建目录中。
.gn 文件中可以使用预定义的参数,比如 is_debug , target_os , rtc_use_h264 等。
.gn 和 .gni 文件中用到各种指令,都在这里有说明: GN Reference。gn 文件中也可以通过 defines 来定义宏,通过 cflags 来指定传递给编译器的标记,通过 ldflags 指定传递给链接器的标记,还可以使用 sources 指定源文件。下面是 webrtc/BUILD.gn 文件的部分内容:
gni 文件是 GN build 使用的头文件,它里面可以做各种事情,比如定义变量、宏、定义配置、定义模板等。你也可以直接使用 gn 内置的 shared_library 和 static_library 来声明目标,比如 third_party/ffmpeg/BUILD.gn 就使用 shared_library 来生成动态库。
webrtc/examples/DEPSGYP是Generate Your Projects的缩写,GYP的目的是为了支持更大的项目编译在不同的平台,比如Mac,Windows,Linux,它可以生成Xcode工程,Visual Studio工程,Ninja编译文件和Mackefiles。
最后在线: 活跃于 6个月, 2周前
评论: 7
获赞: 0
文章: 0
粉丝: 68
关注: 68
好友: 8
User Rating: ( vote)