首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何覆盖GN目标/模板的变量值?

如何覆盖GN目标/模板的变量值?
EN

Stack Overflow用户
提问于 2018-02-28 11:17:08
回答 1查看 631关注 0票数 0

我在我的铬版本中添加了shared_library GN目标。它有一个根据toolchain.gni规则定义的扩展:

代码语言:javascript
复制
# Extension for shared library files (including leading dot).
if (is_mac || is_ios) {
  shlib_extension = ".dylib"
} else if (is_android && is_component_build) {
  # By appending .cr, we prevent name collisions with libraries already
  # loaded by the Android zygote.
  shlib_extension = ".cr.so"
} else if (is_posix) {
  shlib_extension = ".so"
} else if (is_win) {
  shlib_extension = ".dll"
} else {
  assert(false, "Platform not supported")
}

# Prefix for shared library files.
if (is_posix) {
  shlib_prefix = "lib"
} else {
  shlib_prefix = ""
}

我想要改变一个扩展,所以我需要覆盖shlib_extension变量,但只对我的shared_library目标。如果我修改toolchain.gni,它将影响使用shlib_extension变量的所有目标。

我不想使用output_name shared_library属性,因为我可以看到使用out_name="lib${target_name}.cr"可以生成以下v8.ninja

代码语言:javascript
复制
...
output_extension = .so
output_dir = .
solibs = ./libv8_libbase.cr.so

但是,如果让shlib_ext=".cr.so"生成以下v8.ninja

代码语言:javascript
复制
...
output_extension = .cr.so
output_dir = .
solibs = ./libicui18n.cr.so ./libicuuc.cr.so ./libv8_libbase.cr.so

(这意味着output_name更改文件名称,而不是扩展名)

作为问题的逻辑延续,是否有可能覆盖像is_debugis_component_build这样的变量,而不是.gn文件中的变量,而仅用于目标/模板?

假设我想构建V8,就像is_component_build=true一样(并在v8.gni中使用templaets),但是其余的代码采用默认值或用户定义的变量值。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-02 14:08:37

在我的例子中,添加output_extension为我工作:

代码语言:javascript
复制
shared_library(target_name) {
  output_extension = "cr.so"
  ...
}

不确定重写变量的一般情况。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49028300

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档