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、库等
我在 ${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、库等