Как включить общую библиотеку в файл gn chromium?

(Q1) У меня есть test.so с некоторыми функциями, которые мне нужно использовать. Я провел опрос некоторое время, но не получил ответов. Кто-нибудь может посоветовать, как включить общую библиотеку в файл gn проекта chromium? Большое спасибо.

Ниже приведено содержимое моего файла GN:

import("//third_party/WebKit/Source/core/core.gni")

blink_core_sources("frame") {
 sources = [
    "csp/CSPSource.h",
    "csp/ContentSecurityPolicy.cpp",
    "csp/ContentSecurityPolicy.h",
    "csp/MediaListDirective.cpp",
    "csp/MediaListDirective.h",
    "csp/SourceListDirective.cpp",
    "csp/SourceListDirective.h",

    // my created file
    "HelloWorld.h",
    "HelloWorld.cpp",   // Will use the function of provided in add.so
    "add.h"
  ]

  deps = [ ":add.so" ]

}

(Q2) Другой вопрос: если у меня есть исходный код add.so, как мне написать в gn, чтобы использовать исходный код общей библиотеки? Благодарю.

0 ответов

(Q1) Может ли кто-нибудь посоветовать, как включить общую библиотеку в файл gn проекта Chrome?

Обычно вы можете указать каталог библиотеки с помощью lib_dirs и библиотеки с libs. ТвойBUILD.gn файл может быть таким:

import("//third_party/WebKit/Source/core/core.gni")

blink_core_sources("frame") {
 sources = [
    "csp/CSPSource.h",
    "csp/ContentSecurityPolicy.cpp",
    "csp/ContentSecurityPolicy.h",
    "csp/MediaListDirective.cpp",
    "csp/MediaListDirective.h",
    "csp/SourceListDirective.cpp",
    "csp/SourceListDirective.h",

    // my created file
    "HelloWorld.h",
    "HelloWorld.cpp",   // Will use the function of provided in add.so
    "add.h"
  ]

  lib_dirs = [ "//path/to/add.so" ]
  libs = [ "add" ]

}

(Q2) Если у меня есть исходный код add.so, как мне написать в gn, чтобы использовать исходный код разделяемой библиотеки?

Если вы хотите получить общую библиотеку из исходного кода add.so, вы можете написать BUILD.gn файл вроде этого:

shared_library("libadd.so") {
  include_dirs = []
  sources = [
    "/path/to/sources",
  ]
}

Вы можете использовать gn help shared_library Больше подробностей.

И тогда вы можете использовать общую библиотеку, как Q(1).

Наконец, я рекомендую вам использовать gn help чтобы узнать больше о системе сборки GN.

Я нашел решение, вдохновленное https://github.com/matlo607/conan-gn-generator

config("myadd_import") {
  include_dirs = ["./mypath/include"]
  lib_dirs = [ "./mypath/lib" ]
  libs = ["libmyadd.so", "pthread"] # or use full path directly
  visibility = [ ":myadd" ]
}

group("myadd") {
  public_configs = [":myadd_import"]
}

Тогда его можно использовать в deps сектор вроде:

executable("test") {
  sources = [
    "test.cpp"
  ]
  deps = ["//third:myadd"]
}
Другие вопросы по тегам