Yocto:是否可以在 Yocto Makefile 中使用 ${STAGING_DIR_TARGET}?

Yocto: Is it possible to make use ${STAGING_DIR_TARGET} in Yocto Makefile?

我在 ${STAGING_INCDIR}/botan-2 中有 botan.h 可用。我喜欢在我的 yocto 食谱中使用它和我的 Makefile,我的理想是让 Makefile 中提到的“编译”而不是完全占据食谱。附上我的食谱和 Makefile

recipe.bb

SUMMARY = "Makefile  Demo"
SECTION = "apps"
LICENSE = "CLOSED"
DEPENDS = "botan"

APP_NAME = "integrated_app"
localdir = "/usr/local"
bindir = "${localdir}/bin"

TARGET_CC_ARCH += "${LDFLAGS}"

SRC_URI = "file://main.cpp \
           file://Makefile \
       "

S = "${WORKDIR}"

inherit pkgconfig 

do_compile() {
    # make -f Makefile
    oe_runmake
        
}

do_install () {
    install -m 0755 -d ${D}${localdir}
    install -m 0755 -d ${D}${bindir}
    cd ${S}
    install -m 0755 ${APP_NAME} ${D}${bindir}
}

FILES_${PN}-dev = ""
FILES_${PN} = "${bindir}/*"

生成文件

obj = main.o
target = integrated_app
S = "${WORKDIR}"
INC=/home/kjlau/yocto/build/tmp/work/cortexa8hf-neon-poky-linux-gnueabi/botan-app/1.0-r0/recipe-sysroot/usr/include/botan-2 

all: $(obj)
      ${CXX} ${CXXFLAGS} ${LDFLAGS} $(obj)  -o $(target) 

%.o:%.cpp
     ${CXX} ${CXXFLAGS} -I ${INC} -c $^  -o  $@  

.PHONY: clean
clean:
    rm -rf $(obj) $(target)

虽然可以编译成功,但不知能否在Makefile中使用${STAGING_INCDIR}/botan-2?我试过了,它不起作用 though.I 我没有正确实施 INC,我的意思是它“不够普遍”,比如我不能假设每个用户都是 kjlau,对吗?无论如何让它变得更好?

谢谢

您正在寻找 TARGET_CXXFLAGS。将以下内容添加到您的食谱中: TARGET_CXXFLAGS += "-I ${STAGING_INC_DIR}/botan2"。 Makefile 中不需要 S=${WORKDIR}INCDIR

理想情况下,您将在 Makefile 中添加一个安装目标,然后您的配方将非常简单:

SUMMARY = "Makefile  Demo"
SECTION = "apps"
LICENSE = "CLOSED"
DEPENDS = "botan"

TARGET_CXXFLAGS += "-I ${STAGING_INC_DIR}/botan2"

SRC_URI = "file://main.cpp \
           file://Makefile \
       "

S = "${WORKDIR}"

inherit pkgconfig

我不确定,但我想说你也不需要继承 pkgconfig。

对于oe_runmake,您可以设置 EXTRA_OEMAKE += 'MY_SDK_PATH=${STAGING_DIR_TARGET}' 并在 Makefile 中使用 MY_SDK_PATH 来引用 header、库等