添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
Your browser does not seem to support JavaScript. As a result, your viewing experience will be diminished, and you have been placed in read-only mode . Please download a browser that supports JavaScript, or enable it if it's disabled (i.e. NoScript).

Hej Folks,
I would like to work with SCXML in QT5. I got it to work in QtCreator and let it run on my hostmachine.
Works like a charm. (QT5 and Creator was install through the online installer. ( Online Installer ))
But problems begin when running qmake and make in my yocto variscite environment.
As Target I have the VAR-SOM-6UL, so I run everything as described in there "How To" ( Part One , Part Two ).
Hostmachine: Ubuntu 20.04

The steps I do are the following:

$ sudo apt-get install gawk wget git diffstat unzip texinfo gcc-multilib \
build-essential chrpath socat cpio python python3 python3-pip python3-pexpect \
xz-utils debianutils iputils-ping libsdl1.2-dev xterm     
$ sudo apt-get install autoconf libtool libglib2.0-dev libarchive-dev python-git \
sed cvs subversion coreutils texi2html docbook-utils python-pysqlite2 \
help2man make gcc g++ desktop-file-utils libgl1-mesa-dev libglu1-mesa-dev \
mercurial automake groff curl lzop asciidoc u-boot-tools dos2unix mtd-utils pv \
libncurses5 libncurses5-dev libncursesw5-dev libelf-dev zlib1g-dev bc rename 
$ mkdir ~/bin (this step may not be needed if the bin folder already exists)
$ curl https://commondatastorage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
$ chmod a+x ~/bin/repo
$ export PATH=~/bin:$PATH
$ mkdir ~/var-fslc-yocto && cd ~/var-fslc-yocto
$ repo init -u https://github.com/varigit/variscite-bsp-platform.git -b dunfell      
$ repo sync -j$(nproc)   
$ MACHINE=var-som-mx6 DISTRO=fslc-x11 . setup-environment build_x11

To include the QtSCXML I change the conf/local.conf file. My local.conf now looks as following:

MACHINE ??= 'var-som-mx6'
DISTRO ?= 'fslc-x11'
PACKAGE_CLASSES ?= 'package_rpm'
EXTRA_IMAGE_FEATURES ?= "debug-tweaks"
USER_CLASSES ?= "buildstats image-mklibs image-prelink"
PATCHRESOLVE = "noop"
BB_DISKMON_DIRS ??= "\
    STOPTASKS,${TMPDIR},1G,100K \
    STOPTASKS,${DL_DIR},1G,100K \
    STOPTASKS,${SSTATE_DIR},1G,100K \
    STOPTASKS,/tmp,100M,100K \
    ABORT,${TMPDIR},100M,1K \
    ABORT,${DL_DIR},100M,1K \
    ABORT,${SSTATE_DIR},100M,1K \
    ABORT,/tmp,10M,1K"
PACKAGECONFIG_append_pn-qemu-system-native = " sdl"
CONF_VERSION = "1"
DL_DIR ?= "${BSPDIR}/downloads/"
ACCEPT_FSL_EULA = "1"
#check connectivity using google
CONNECTIVITY_CHECK_URIS = "https://www.google.com/"
IMAGE_INSTALL_append = " qtscxml"
TOOLCHAIN_HOST_TASK_append = " nativesdk-qtscxml-dev"

I run bitbake, the .sh, set the source and at the end I run qmake and make:

$ bitbake -c populate_sdk fsl-image-qt5
$ . ~/var-fslc-yocto/build_x11/tmp/deploy/sdk/fslc-x11-glibc-x86_64-fsl-image-qt5-cortexa9t2hf-neon-var-som-mx6-toolchain-3.1.sh 
$ . /opt/fslc-x11/3.1/environment-setup-cortexa9t2hf-neon-fslc-linux-gnueabi
$ cd ~/TestProject
$ mkdir build
$ qmake -makefile -o build/MakeFile test.pro
$ make -C build/

But make fails with No rule to make target.
The detailed Error is:

make: Entering directory '/home/yocto/TestProject/build'
make: *** No rule to make target '/opt/fslc-x11/3.1/sysroots/x86_64-fslcsdk-linux/usr/bin/qscxmlc', needed by 'Test.h'.  Stop.
make: Leaving directory '/home/yocto/TestProject/build'

If I look into /opt/..usr/bin/ but I can't find the qscxmlc compiler. So it wasn't provided? How do I change that?
I mean I can't just copy paste the qscxmlc executable from the ~/Qt/ installation (where it works) into it ..
Thanks for every help .. I've been struggling for weeks on that ..

I have exactly the same problem, both for building my application software with bitbake and in the populated sdk. qscxmlc is the state machine compiler, which translates scxml files into C++.
A temporary working solution is to manually copy the qscxmlc executable from the work directory of the qtscxml package to the work directory of my application:

from .../tmp/work/armv7at2hf-neon-fslc-linux-gnueabi/qtscxml/5.10.1+gitAUTOINC+d9b2f8c56d-r0/recipe-sysroot-native/usr/bin/qt5/qscxmlc
to .../tmp/work/armv7at2hf-neon-fslc-linux-gnueabi/my-app/00.A.01-r0/recipe-sysroot-native/usr/bin/qt5

Doing this I can at least complete my software compilation; it doesn't completely solve the issue of course. I'm trying to find how to add qscxmlc to the files installed by the qtscxml recipe, still without success...

The same solution, made automatic: add to your application recipe the following code

do_configure_prepend() {
	cp ${WORKDIR}/../../qtscxml/*/recipe-sysroot-native/usr/bin/qt5/qscxmlc \
	${OE_QMAKE_PATH_HOST_PREFIX}/usr/bin/qt5

Anyway, this is still a dirty trick, the final solution should be in the qt5 recipes.