Как включить общую библиотеку в файл 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"]
}