This service is available only in Japanese-language.

S = $WORKDIR と指定する意味は?

弊社で実施するYoctoProject® 公式実践講座の中で、受講生からあった質問です。

https://www.yoctoproject.org/docs/3.1.3/dev-manual/dev-manual.html#new-r...

で例として表示されているレシピの中で、 S = $WORKDIR と指定する意味は?

===========================================================
SUMMARY = "Simple helloworld application"
SECTION = "examples"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"

SRC_URI = "file://helloworld.c"

S = "${WORKDIR}"

do_compile() {
${CC} helloworld.c -o helloworld
}

do_install() {
install -d ${D}${bindir}
install -m 0755 helloworld ${D}${bindir}
}

===========================================================
__
上記レシピ内で、SRC_URI で指定されたファイルは、do_unpack タスクで、$WORKDIR 直下にコピーされるためです。

SRC_URI に helloworld.tar のようにtar形式でアーカイブしたファイルを指定するケースで、展開時に helloworld-0.1/helloworld.c となる場合は、ソースコードの展開先が${PN}-${PV} となるため、S=パス名 でディレクトリを指定する記述は不要となります。

また、helloworld.tar の中身が helloworld/helloworld.c となる場合は、S=${PN} と指定することで、do_compile を実行する際に、$WORKDIR/helloworld に展開されたソースコードを参照します。