私はプロジェクトの静的ライブラリを持っておりA
(これを と呼びましょうliba.so
)、自分のプロジェクトで共有ライブラリをコンパイルしB
(それを と呼びましょうlibb.so
)、そこに組み込みたいliba.so
と考えています。
また、そのプロジェクトB
には にも依存するバイナリがあるliba.so
ので、バイナリに埋め込みたいと思います。
それは可能ですか?どのように?
私はプロジェクトの静的ライブラリを持っておりA
(これを と呼びましょうliba.so
)、自分のプロジェクトで共有ライブラリをコンパイルしB
(それを と呼びましょうlibb.so
)、そこに組み込みたいliba.so
と考えています。
また、そのプロジェクトB
には にも依存するバイナリがあるliba.so
ので、バイナリに埋め込みたいと思います。
それは可能ですか?どのように?
A が別のコード ベースの場合
プロジェクト A をビルドしてインストールします。次に、プロジェクト B の定義でプロジェクト A への依存関係を作成します。
それは次のようになります。
a_dep = dependency('a', version : '>=1.2.8')
lib_b = shared_library('proj_b', sources: 'prog_b.c', dependencies : a_dep)
のバージョン セクションdependency
はオプションです。
A が B と同じ Meson プロジェクトにある場合
A と B が同じメソン プロジェクトにある場合は、少し醜くなります。A で依存関係アンカーを宣言する必要があります。
それは次のようになります。
incdirs = include_directories('include')
lib_a = static_library('a', 'proj_a.c', include_directories : indirs)
liba_dependency = declare_dependency(
include_directories : incdirs,
link_with : lib_a,
sources : ['proj_a.c'])
次に、プロジェクト B は次のようになります。
lib_b = shared_library('proj_b', sources: 'prog_b.c', dependencies : lib_a)
既存のプリコンパイル済みライブラリがある場合は、次のように直接ラップできますdependency
。
cpp = meson.get_compiler('cpp')
# (Meson requires an absolute path for find_library().)
libdir = meson.current_source_dir() + './lib/
precompiledA_dep = cpp.find_library('A', dirs : libdir) # ./lib/libA.lib
...
# Link against libA.lib here ...
B_lib = library('libB', 'libB.cpp', dependencies : precompiledA_dep)
B_exe = executable('exeB', 'source.cpp', dependencies : precompiledA_dep)
(Meson 0.57 でテスト済み)