(Q1)我有一个test.so有一些我需要使用的功能。我已经调查了一段时间但没有答案。任何人都可以建议如何在铬项目的gn文件中包含共享库?非常感谢。
以下是我的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 :(得分:1)
(Q1)有人可以建议如何在Chrome项目的gn文件中包含共享库吗?
通常,您可以使用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 build系统的更多详细信息。
答案 1 :(得分:0)
我发现了一个受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"]
}