This service is available only in Japanese-language.
弊社で実施するYoctoProject® 公式実践講座の中で、受講生からあった質問です。
https://www.yoctoproject.org/docs/3.1.3/dev-manual/dev-manual.html#new-r...
で例として表示されているレシピの中で、 S = $WORKDIR と指定する意味は?
yakuhito
2021/9/21 (火) 11:06
=========================================================== 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 に展開されたソースコードを参照します。
yakuhito
2021/9/21 (火) 11:06
do_unpack でソースコードの展開先が$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 に展開されたソースコードを参照します。