This service is available only in Japanese-language.

自作ライブラリのSDKへの追加について

自作ライブラリlibfoo.soと、このライブラリを使用するためのfoo.hをSDKに含めようとしています。
libfoo.soは無事にSDKに含めることができたのですが、foo.hがSDKに含まれていません。
レシピは以下のものを使用しています。
どうすればfoo.hを含めることができるか、アドバイスいただけますでしょうか。

SUMMARY = "Simple foo library"
SECTION = "libs"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"

PACKAGES = "${PN}"
PROVIDES = "${PN}"

FILES_${PN} += "${libdir}/libfoo.so"
FILES_${PN}-dev += "${libdir}/libfoo.so \
${includedir}/foo.h "
INHIBIT_PACKAGE_DEBUG_SPLIT = "1"

SRC_URI = "file://.."
S = "${WORKDIR}/libfoo"
TARGET_CC_ARCH += "${LDFLAGS}"

do_compile() {
oe_runmake
}

do_install() {
install -d ${D}${libdir}
install -m 0755 libfoo.so ${D}${libdir}

install -d ${D}${includedir}
install -m 0755 ${S}/../include/foo.h ${D}${includedir}/
}

ファイルの位置は以下のようになっています。
recipes-xxx
└─libfoo/
├── include
│   └── foo.h
├── libfoo
│   ├── Makefile
│   └── foo.c
└── libfoo_1.0.bb

conf/local.conf 内で INHERIT += "rm_work" が有効になっている場合は、無効化した上で
tmp-glibc/work/[ARCJ]/libfoo/1.0/ 以下、どのようにファイルが展開されているか確認されると良いかと。

libfooフォルダは生成されていないようなのですが、下記debパッケージは見つかりました。

build-openstlinuxweston-stm32mp1-portsetting/tmp-glibc/work/stm32mp1_portsetting-ostl-linux-gnueabi/st-image-xxx/1.0-r0/oe-sdk-repo/cortexa7t2hf-neon-vfpv4/libfoo_1.0-r0.12_armhf.deb

libfoo.soがSDKに含まれる点については本debによるものと思われます。
dpkg -c libfoo1.0-r0.12_armhf.deb
drwxrwxrwx root/root 0 2021-05-25 12:47 ./
drwxr-xr-x root/root 0 2021-05-25 12:47 ./usr/
drwxr-xr-x root/root 0 2021-05-25 12:47 ./usr/lib/
-rwxr-xr-x root/root 5276 2021-05-25 12:47 ./usr/lib/libfoo.so

SDKにヘッダファイルを加えることができましたので、報告させていただきます。
FILES_${PN} +=にもまたヘッダファイルを加えることで、SDKにもヘッダファイルが加わりました。
ヘッダファイルを必要としているのはSDKなのでFILES_${PN}-dev にのみ加えればよいのかと考えていたのですが、誤りだったのでしょうか。

レシピ等に変更が無い場合、SSTATE_DIR に保存された中間生成物が利用されるため
libfoo 関連のディレクトリが生成されていないかと。
一度、bitbake -c cleansstate libfoo
と、libfoo に関係するSSTATEをクリアした後、再度bitbakeを実行すると、libfoo関連の
ワークエリアが生成されます。

最初に投稿しましたレシピの記載(FILES_${PN} += はlibfoo.soのみ)に戻しまして、
cleanstate後再度bitbake(populate_sdk)を行いました。
libfooフォルダが生成され、以下のような構成となっていました。
.
├── 1.0-r0
│   ├── configure.sstate
│   ├── deploy-debs
│   │   └── cortexa7t2hf-neon-vfpv4
│   │   └── libfoo_1.0-r0.15_armhf.deb
│   ├── image
│   │   └── usr
│   │   ├── include
│   │   │   └── foo.h
│   │   └── lib
│   │   └── libfoo.so
│   ├── include
│   │   └── foo.h
│   ├── libfoo
│   │   ├── libfoo.so
│   │   ├── Makefile
│   │   └── foo.c
│   ├── libfoo_1.0.bb
│   ├── package
│   │   └── usr
│   │   ├── include
│   │   │   └──foo.h
│   │   └── lib
│   │   └── libfoo.so
│   ├── packages-split
│   │   ├── libfoo
│   │   │   └── usr
│   │   │   └── lib
│   │   │   └── libfoo.so
│   │   └── libfoo.shlibdeps
│   ├── pkgdata
│   │   ├── libfoo
│   │   ├── runtime
│   │   │   ├── libfoo
│   │   │   └── libfoo.packaged
│   │   ├── runtime-reverse
│   │   │   └── libfoo -> ../runtime/libfoo
│   │   ├── runtime-rprovides
│   │   └── shlibs2
│   ├── pseudo
│   │   ├── files.db
│   │   ├── logs.db
│   │   ├── pseudo.lock
│   │   ├── pseudo.log
│   │   ├── pseudo.pid
│   │   └── pseudo.socket
(以下二階層より下省略)
│   ├── recipe-sysroot
│   ├── recipe-sysroot-native
│   ├── source-date-epoch
│   ├── sstate-install-deploy_source_date_epoch
│   ├── sstate-install-package
│   ├── sstate-install-packagedata
│   ├── sstate-install-package_write_deb
│   └── temp

packages-split 以下に生成されたディレクトリが libfoo のみとなっています。
PACKAGES変数をレシピ内で指定しなければ、デフォルトでlibfoo libfoo-dbg libfoo-dev libfoo-doc libfoo-src 辺りのパッケージが生成され、FILES_${PN}-dev の指定も有効になったのではないかと。

PACKAGES変数をレシピ内から指定しないよう、記載を削除し、cleansstate後populate_sdkしましたところ、
libfoo-dev等は生成されました。しかし、この変更によりエラーが発生しています。
Reading package lists...
Building dependency tree...
Package libfoo is not available, but is referred to by another package.
This may mean that the package is missing, has been obsoleted, or
is only available from another source

E: Package 'libfoo' has no installation candidate

なお、レシピのdo_installの記載は先に送りました記載から変更しておらず、makefileの記載は以下のとおりです。
TARGET=libfoo.so
SRCS=foo.c

all:
${CC} ${SRCS} -I../include -shared -fPIC -o ${TARGET}

install:
sudo cp ${TARGET} /usr/local/lib;
sudo ldconfig;

clean:
rm -f ${TARGET}

packages-split 内でのファイルの配置ですが、PACKAGES変数に libfoo のみ指定した際は以下のように
libfoo パッケージ内に、usr/lib/libfoo.so が含まれ実体となるパッケージが生成されています。
│ ├── packages-split
│ │ ├── libfoo
│ │ │ └── usr
│ │ │ └── lib
│ │ │ └── libfoo.so
現状は、どのようなファイルが生成されていますでしょうか?

また、sdk生成元のイメージレシピに対して、libfooはどのように追加指定していますか?
・IMAGE_INSTALL 変数でlibfooを指定
・IMAGE_INSTALL 変数で指定されたパッケージの生成元のレシピ内で、DEPENDS/RDEPENDS で依存関係を記載