-
-
Save theshadowx/438297ac465874a5e226 to your computer and use it in GitHub Desktop.
#!/bin/bash | |
set -e | |
# Install NaCl | |
wget http://storage.googleapis.com/nativeclient-mirror/nacl/nacl_sdk/nacl_sdk.zip | |
unzip nacl_sdk.zip | |
rm nacl_sdk.zip | |
nacl_sdk/naclsdk list | |
# get the latest stable bender | |
nacl_sdk/naclsdk install pepper_47 | |
NACL_SDK_ROOT=$(pwd)/$(find ./nacl_sdk -maxdepth 1 -type d -name "pepper*") | |
echo "export NACL_SDK_ROOT=$NACL_SDK_ROOT">> ~/.bashrc | |
source ~/.bashrc | |
# Checkout Qt 5.6.0 | |
git clone git://code.qt.io/qt/qt5.git Qt5.6 | |
cd Qt5.6 | |
git checkout 5.6 | |
perl init-repository | |
git checkout 5.6 | |
cd .. | |
cd Qt5.6/qtbase | |
git checkout wip/nacl | |
cd ../qtdeclarative | |
git checkout wip/nacl | |
cd ../qtxmlpatterns | |
git apply ../../qtxmlpatterns.patch | |
cd ../.. | |
mkdir QtNaCl_56 | |
cd QtNaCl_56 | |
../Qt5.6/qtbase/nacl-configure linux_x86_newlib release 64 | |
make module-qtbase -j6 | |
make module-qtdeclarative -j6 | |
make module-qtquickcontrols -j6 | |
#running the example | |
# cd ../Qt5.4.2/qtdeclarative/examples/nacl | |
# mkdir build | |
# cd build | |
# ../../../../../QtNacl_5.4/qtbase/bin/qmake .. | |
# make | |
# ../../../../../QtNacl_5.4/qtbase/bin/nacldeployqt nacl.nexe --run |
diff --git a/tools/tools.pro b/tools/tools.pro | |
index 92bbaca..0040747 100644 | |
--- a/tools/tools.pro | |
+++ b/tools/tools.pro | |
@@ -1,9 +1,11 @@ | |
TEMPLATE = subdirs | |
load(qfeatures) | |
-!android|android_app { | |
- SUBDIRS += xmlpatterns | |
- !contains(QT_DISABLED_FEATURES, xmlschema) { | |
- SUBDIRS += xmlpatternsvalidator | |
+!nacl { | |
+ !android|android_app { | |
+ SUBDIRS += xmlpatterns | |
+ !contains(QT_DISABLED_FEATURES, xmlschema) { | |
+ SUBDIRS += xmlpatternsvalidator | |
+ } | |
} | |
} | |
diff --git a/tools/xmlpatterns/xmlpatterns.pro b/tools/xmlpatterns/xmlpatterns.pro | |
index 0f1ee4f..1172883 100644 | |
--- a/tools/xmlpatterns/xmlpatterns.pro | |
+++ b/tools/xmlpatterns/xmlpatterns.pro | |
@@ -14,4 +14,4 @@ HEADERS = main.h \ | |
load(qt_tool) | |
# with c++11 / __STRICT_ANSI__ mingw.org stdio.h doesn't declare e.g. _fileno | |
-win32-g++*: QMAKE_CXXFLAGS_CXX11 = -std=gnu++0x | |
\ No newline at end of file | |
+win32-g++*: QMAKE_CXXFLAGS_CXX11 = -std=gnu++0x | |
diff --git a/tools/xmlpatternsvalidator/xmlpatternsvalidator.pro b/tools/xmlpatternsvalidator/xmlpatternsvalidator.pro | |
index af9469f..21b1b18 100644 | |
--- a/tools/xmlpatternsvalidator/xmlpatternsvalidator.pro | |
+++ b/tools/xmlpatternsvalidator/xmlpatternsvalidator.pro | |
@@ -1,6 +1,8 @@ | |
-QT = core xmlpatterns | |
+!nacl { | |
+ QT = core xmlpatterns | |
-SOURCES = main.cpp | |
-HEADERS = main.h | |
+ SOURCES = main.cpp | |
+ HEADERS = main.h | |
-load(qt_tool) | |
+ load(qt_tool) | |
+} |
@polrus
Sorry for the late response.
Have you been able to run an app successfully in Chrome with the script + your modifications ?
Hi Ali,
Thank you for respond.
I tried to do all you advise, but unfortunately on the step "$ /path/to/QtNaCl.sh" I received the followinr error in the command line:
Ваша ветка обновлена в соответствии с (Your branch updated related to) «origin/5.6».
Checking out files: 100% (2035/2035), done.
Предыдущая позиция (Previous position) HEAD была (was) 50d9ee2... Improve QStringBuilder docs
Ветка (Branch) wip/nacl отслеживает внешнюю ветку (Keeps track of the external branch) wip/nacl из (from) origin.
Переключено на новую ветку (Switched to a new branch) «wip/nacl»
Checking out files: 100% (733/733), done.
Предыдущая позиция (Previous position) HEAD была (was) 2da8e40... QML: clear the property cache on QObjectWrapper destuction
Ветка (Branch) wip/nacl отслеживает внешнюю ветку (Keeps track of the external branch) wip/nacl из (from) origin.
Переключено на новую ветку (Switched to a new branch) «wip/nacl»
Directory not found: /home/komche/./nacl_sdk/pepper_47 ./nacl_sdk/pepper_49. Check NACL_SDK_ROOT.
make: *** Нет правила для сборки цели (There is no rule to build a goal) `module-qtbase'. Останов (Stoped).
May be I need to delete all previous Qt versions before start, or rebbot the OS? How do you think?
@kom1che the issue is that you have two versions of pepper installed in your home directory
--> /home/komche/./nacl_sdk/pepper_47
--> /home/komche/./nacl_sdk/pepper_49
so when $(find ./nacl_sdk -maxdepth 1 -type d -name "pepper*")
is executed it finds two elements that's why NACL_SDK_ROOT is /home/komche/./nacl_sdk/pepper_47 ./nacl_sdk/pepper_49 where it should be /home/komche/./nacl_sdk/pepper_47 if you had installed just pepper 47
Thank you! It helped.
One more question, when I am trying to generate makefile
$> docker run --rm -it -v /path/to/ProjectFolder:/data/example theshadowx/qt_nacl:pepper47_qt56 bash -c "/opt/QtNaCl_5.4/qtbase/bin/qmake /data/example -o /data/example/build/"
the following problem occured -
komche@komche-K56CM:/$ sudo docker run --rm -it -v /home/komche/CheckRD:/home/komche/RD_stage theshadowx/qt_nacl:pepper47_qt56 bash -c "/home/komche/QtNaCl_56/qtbase/bin/qmake /home/komche/RD_stage -o /home/komche/RD_stage/build/"
[sudo] password for komche:
bash: /home/komche/QtNaCl_56/qtbase/bin/qmake: No such file or directory
komche@komche-K56CM:/$ cd /home/komche
komche@komche-K56CM:~$
However , /path/to/QtNaCl.sh created this folder (QtNaCl_56) exactly in this path - /home/komche/QtNaCl_56
This because docker run
will start a container and all the commands that are used will be launched inside this container.
so the path /home/komche/QtNaCl_56/qtbase/bin/qmake doesn't exist inside the container but in the host (your computer).
So the solution is to use /opt/QtNaCl_5.4/qtbase/bin/qmake:
sudo docker run --rm -it -v /home/komche/CheckRD:/home/komche/RD_stage theshadowx/qt_nacl:pepper47_qt56 bash -c "/opt/QtNaCl_5.4/qtbase/bin/qmake /home/komche/RD_stage -o /home/komche/RD_stage/build/"
I think you can directly execute qmake without bash -c
sudo docker run --rm -it -v /home/komche/CheckRD:/home/komche/RD_stage theshadowx/qt_nacl:pepper47_qt56 /opt/QtNaCl_5.4/qtbase/bin/qmake /home/komche/RD_stage -o /home/komche/RD_stage/build/
N.B
If you want to use Docker, you don't need to execute the script.
Using Docker image (theshadowx/qt_nacl) is an alternative that simplifies the use of Qt compiled with NaCl, you'll need just to to pull the image and run the container and then voila, you have Qt with qmake and all the binaries needed to build your app and deploy it, no need to clone Qt nor configure, nor compile it. ;)
Unfortunatelly, it doesn't work properly:
komche@komche-K56CM:$ sudo docker run --rm -it -v /home/komche/CheckRD:/home/komche/RD_stage theshadowx/qt_nacl:pepper47_qt56 bash -c "mkdir /home/komche/RD_stage/build/"$ sudo docker run --rm -it -v /home/komche/CheckRD:/home/komche/RD_stage theshadowx/qt_nacl:pepper47_qt56 /opt/QtNaCl_5.4/qtbase/bin/qmake /home/komche/RD_stage -o /home/komche/RD_stage/build/
komche@komche-K56CM:
docker: Error response from daemon: oci runtime error: container_linux.go:247: starting container process caused "exec: "/opt/QtNaCl_5.4/qtbase/bin/qmake": stat /opt/QtNaCl_5.4/qtbase/bin/qmake: no such file or directory".
When I launched script from your repository, all three folders (nacl_sdk, Qt5.6 and QtNaCl_56) were created inside my home folder (/home/komche). So, there is no QtNaCl_5.4 folder in the path /opt/QtNaCl_5.4/qtbase/bin/qmake.
May be I need to launch your script inside /opt ?
no need, if you use the script and everything goes well, you should find QtNaCl_56 in the same directory as the script
In addition, I noticed that in docker command stand QtNaCl_5.4 and script creates QtNaCl_56...
Just forget about the script:
My apologies, I have given you bad docker command line.
Here is what should be done (I have just tested in my machine)
Qmake
I have added workdir argument so it will make things easier. we need just to call qmake add the path to the directory where .pro is present, I presume here that your main .pro is in /home/komche/RD_stage.
sudo docker run --rm -it -v /home/komche/CheckRD:/home/komche/RD_stage -w=/home/komche/RD_stage theshadowx/qt_nacl:pepper47_qt56 /opt/QtNaCl_56/qtbase/bin/qmake ..
Make
The Makefile has been generated in the previous command so as we are setting the workdir as build we need just to call make
sudo docker run --rm -it -v /home/komche/CheckRD:/home/komche/RD_stage -w=/home/komche/RD_stage theshadowx/qt_nacl:pepper47_qt56 make
Deploy
Just be sure that the file generated is CheckRD.bc
sudo docker run --rm -it -v /home/komche/CheckRD:/home/komche/RD_stage -p 8000:8000 -w=/home/komche/RD_stage theshadowx/qt_nacl:pepper47_qt56 /opt/QtNaCl_56/qtbase/bin/nacldeployqt CheckRD.bc --run
Hi, you are right. this is project folder
However, I tried different commands you gave but next error always arises as follows:
komche@komche-K56CM:~$ sudo docker run --rm -it -v /home/komche/CheckRD:/home/komche/RD_stage theshadowx/qt_nacl:pepper47_qt56 bash -c "/opt/QtNaCl_56/qtbase/bin/qmake /home/komche/RD_stage -o /home/komcheRD_stage/build/"
Cannot read /home/komche/RD_stage: file to open is a directory
Error processing project file: /home/komche/RD_stage
komche@komche-K56CM:~$ sudo docker run --rm -it -v /home/komche/CheckRD:/home/komche/RD_stage theshadowx/qt_nacl:pepper47_qt56 /opt/QtNaCl_56/qtbase/bin/qmake /home/komche/RD_stage -o /home/komche/RD_stage/build/
Cannot read /home/komche/RD_stage: file to open is a directory
Error processing project file: /home/komche/RD_stage
komche@komche-K56CM:~$ sudo docker run --rm -it -v /home/komche/CheckRD:/home/komche/RD_stage -w=/home/komche/RD_stage theshadowx/qt_nacl:pepper47_qt56 /opt/QtNaCl_56/qtbase/bin/qmake ..
Cannot read /home/komche: file to open is a directory
Error processing project file: ..
From the picture, the project folder is RD_stage and not CheckRD that's why it doesn't work. Then the commands should be as the following :
Qmake
sudo docker run --rm -it -v /home/komche/RD_stage:/home/komche/RD_stage -w=/home/komche/RD_stage/build theshadowx/qt_nacl:pepper47_qt56 /opt/QtNaCl_56/qtbase/bin/qmake ..
Make
sudo docker run --rm -it -v /home/komche/RD_stage:/home/komche/RD_stage -w=/home/komche/RD_stage/build theshadowx/qt_nacl:pepper47_qt56 make
Deploy
sudo docker run --rm -it -v /home/komche/RD_stage:/home/komche/RD_stage -p 8000:8000 -w=/home/komche/RD_stage/build theshadowx/qt_nacl:pepper47_qt56 /opt/QtNaCl_56/qtbase/bin/nacldeployqt CheckRD.bc --run
Hi Ali!
Finally the makefile has been generated but only with this command:
komche@komche-K56CM:~$ sudo docker run --rm -it -v /home/komche/RD_stage:/home/komche/RD_stage theshadowx/qt_nacl:pepper47_qt56 /opt/QtNaCl_56/qtbase/bin/qmake /home/komche/RD_stage -o /home/komche/RD_stage/build/
Then I started command for make as follows:
komche@komche-K56CM:~$ sudo docker run --rm -it -v /home/komche/RD_stage:/home/komche/RD_stage theshadowx/qt_nacl:pepper47_qt56 bash -c "cd /home/komche/RD_stage/build && make"
after the process has started in this way, but has stoped with error as follows
komche@komche-K56CM:~$ sudo docker run --rm -it -v /home/komche/RD_stage:/home/komche/RD_stage theshadowx/qt_nacl:pepper47_qt56 bash -c "cd /home/komche/RD_stage/build && make"
/opt/QtNaCl_56/qtbase/bin/uic ../service.ui -o ui_service.h
/opt/nacl_sdk/pepper_47/toolchain/linux_x86_newlib/bin/x86_64-nacl-g++ -m64 -c -pipe -O2 -std=gnu++0x -Wall -W -fPIC -DQ_OS_NACL_PEPPER -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -I../../RD_stage -I. -I/opt/QtNaCl_56/qtbase/include -I/opt/QtNaCl_56/qtbase/include/QtWidgets -I/opt/QtNaCl_56/qtbase/include/QtGui -I/opt/QtNaCl_56/qtbase/include/QtCore -I. -I. -I/opt/nacl_sdk/pepper_47/include -I/opt/Qt5.6/qtbase/mkspecs/unsupported/nacl-x86-newlib-g++-64 -o main.o ../main.cpp
/opt/nacl_sdk/pepper_47/toolchain/linux_x86_newlib/bin/x86_64-nacl-g++ -m64 -c -pipe -O2 -std=gnu++0x -Wall -W -fPIC -DQ_OS_NACL_PEPPER -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -I../../RD_stage -I. -I/opt/QtNaCl_56/qtbase/include -I/opt/QtNaCl_56/qtbase/include/QtWidgets -I/opt/QtNaCl_56/qtbase/include/QtGui -I/opt/QtNaCl_56/qtbase/include/QtCore -I. -I. -I/opt/nacl_sdk/pepper_47/include -I/opt/Qt5.6/qtbase/mkspecs/unsupported/nacl-x86-newlib-g++-64 -o service.o ../service.cpp
/opt/nacl_sdk/pepper_47/toolchain/linux_x86_newlib/bin/x86_64-nacl-g++ -m64 -c -pipe -O2 -std=gnu++0x -Wall -W -fPIC -DQ_OS_NACL_PEPPER -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -I../../RD_stage -I. -I/opt/QtNaCl_56/qtbase/include -I/opt/QtNaCl_56/qtbase/include/QtWidgets -I/opt/QtNaCl_56/qtbase/include/QtGui -I/opt/QtNaCl_56/qtbase/include/QtCore -I. -I. -I/opt/nacl_sdk/pepper_47/include -I/opt/Qt5.6/qtbase/mkspecs/unsupported/nacl-x86-newlib-g++-64 -o originfpl.o ../originfpl.cpp
/opt/nacl_sdk/pepper_47/toolchain/linux_x86_newlib/bin/x86_64-nacl-g++ -m64 -c -pipe -O2 -std=gnu++0x -Wall -W -fPIC -DQ_OS_NACL_PEPPER -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -I../../RD_stage -I. -I/opt/QtNaCl_56/qtbase/include -I/opt/QtNaCl_56/qtbase/include/QtWidgets -I/opt/QtNaCl_56/qtbase/include/QtGui -I/opt/QtNaCl_56/qtbase/include/QtCore -I. -I. -I/opt/nacl_sdk/pepper_47/include -I/opt/Qt5.6/qtbase/mkspecs/unsupported/nacl-x86-newlib-g++-64 -o anime.o ../anime.cpp
../anime.cpp:11: warning: unused parameter 'parent'
../anime.cpp: In member function 'void Anime::setXY(QList, QList)':
../anime.cpp:38: warning: comparison between signed and unsigned integer expressions
/opt/nacl_sdk/pepper_47/toolchain/linux_x86_newlib/bin/x86_64-nacl-g++ -m64 -c -pipe -O2 -std=gnu++0x -Wall -W -fPIC -DQ_OS_NACL_PEPPER -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -I../../RD_stage -I. -I/opt/QtNaCl_56/qtbase/include -I/opt/QtNaCl_56/qtbase/include/QtWidgets -I/opt/QtNaCl_56/qtbase/include/QtGui -I/opt/QtNaCl_56/qtbase/include/QtCore -I. -I. -I/opt/nacl_sdk/pepper_47/include -I/opt/Qt5.6/qtbase/mkspecs/unsupported/nacl-x86-newlib-g++-64 -o rd-artem.nexe_plugin_import.o rd-artem.nexe_plugin_import.cpp
/opt/QtNaCl_56/qtbase/bin/rcc -name src ../src.qrc -o qrc_src.cpp
/opt/nacl_sdk/pepper_47/toolchain/linux_x86_newlib/bin/x86_64-nacl-g++ -m64 -c -pipe -O2 -std=gnu++0x -Wall -W -fPIC -DQ_OS_NACL_PEPPER -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -I../../RD_stage -I. -I/opt/QtNaCl_56/qtbase/include -I/opt/QtNaCl_56/qtbase/include/QtWidgets -I/opt/QtNaCl_56/qtbase/include/QtGui -I/opt/QtNaCl_56/qtbase/include/QtCore -I. -I. -I/opt/nacl_sdk/pepper_47/include -I/opt/Qt5.6/qtbase/mkspecs/unsupported/nacl-x86-newlib-g++-64 -o qrc_src.o qrc_src.cpp
/opt/QtNaCl_56/qtbase/bin/moc -DQ_OS_NACL_PEPPER -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -I/opt/Qt5.6/qtbase/mkspecs/unsupported/nacl-x86-newlib-g++-64 -I/home/komche/RD_stage -I/opt/QtNaCl_56/qtbase/include -I/opt/QtNaCl_56/qtbase/include/QtWidgets -I/opt/QtNaCl_56/qtbase/include/QtGui -I/opt/QtNaCl_56/qtbase/include/QtCore -I. -I/opt/nacl_sdk/pepper_47/toolchain/linux_x86_newlib/x86_64-nacl/include/c++/4.4.3 -I/opt/nacl_sdk/pepper_47/toolchain/linux_x86_newlib/x86_64-nacl/include/c++/4.4.3/x86_64-nacl -I/opt/nacl_sdk/pepper_47/toolchain/linux_x86_newlib/x86_64-nacl/include/c++/4.4.3/backward -I/opt/nacl_sdk/pepper_47/toolchain/linux_x86_newlib/lib/gcc/x86_64-nacl/4.4.3/include -I/opt/nacl_sdk/pepper_47/toolchain/linux_x86_newlib/lib/gcc/x86_64-nacl/4.4.3/include-fixed -I/opt/nacl_sdk/pepper_47/toolchain/linux_x86_newlib/x86_64-nacl/include ../service.h -o moc_service.cpp
/opt/nacl_sdk/pepper_47/toolchain/linux_x86_newlib/bin/x86_64-nacl-g++ -m64 -c -pipe -O2 -std=gnu++0x -Wall -W -fPIC -DQ_OS_NACL_PEPPER -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -I../../RD_stage -I. -I/opt/QtNaCl_56/qtbase/include -I/opt/QtNaCl_56/qtbase/include/QtWidgets -I/opt/QtNaCl_56/qtbase/include/QtGui -I/opt/QtNaCl_56/qtbase/include/QtCore -I. -I. -I/opt/nacl_sdk/pepper_47/include -I/opt/Qt5.6/qtbase/mkspecs/unsupported/nacl-x86-newlib-g++-64 -o moc_service.o moc_service.cpp
/opt/QtNaCl_56/qtbase/bin/moc -DQ_OS_NACL_PEPPER -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -I/opt/Qt5.6/qtbase/mkspecs/unsupported/nacl-x86-newlib-g++-64 -I/home/komche/RD_stage -I/opt/QtNaCl_56/qtbase/include -I/opt/QtNaCl_56/qtbase/include/QtWidgets -I/opt/QtNaCl_56/qtbase/include/QtGui -I/opt/QtNaCl_56/qtbase/include/QtCore -I. -I/opt/nacl_sdk/pepper_47/toolchain/linux_x86_newlib/x86_64-nacl/include/c++/4.4.3 -I/opt/nacl_sdk/pepper_47/toolchain/linux_x86_newlib/x86_64-nacl/include/c++/4.4.3/x86_64-nacl -I/opt/nacl_sdk/pepper_47/toolchain/linux_x86_newlib/x86_64-nacl/include/c++/4.4.3/backward -I/opt/nacl_sdk/pepper_47/toolchain/linux_x86_newlib/lib/gcc/x86_64-nacl/4.4.3/include -I/opt/nacl_sdk/pepper_47/toolchain/linux_x86_newlib/lib/gcc/x86_64-nacl/4.4.3/include-fixed -I/opt/nacl_sdk/pepper_47/toolchain/linux_x86_newlib/x86_64-nacl/include ../originfpl.h -o moc_originfpl.cpp
/opt/nacl_sdk/pepper_47/toolchain/linux_x86_newlib/bin/x86_64-nacl-g++ -m64 -c -pipe -O2 -std=gnu++0x -Wall -W -fPIC -DQ_OS_NACL_PEPPER -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -I../../RD_stage -I. -I/opt/QtNaCl_56/qtbase/include -I/opt/QtNaCl_56/qtbase/include/QtWidgets -I/opt/QtNaCl_56/qtbase/include/QtGui -I/opt/QtNaCl_56/qtbase/include/QtCore -I. -I. -I/opt/nacl_sdk/pepper_47/include -I/opt/Qt5.6/qtbase/mkspecs/unsupported/nacl-x86-newlib-g++-64 -o moc_originfpl.o moc_originfpl.cpp
/opt/QtNaCl_56/qtbase/bin/moc -DQ_OS_NACL_PEPPER -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -I/opt/Qt5.6/qtbase/mkspecs/unsupported/nacl-x86-newlib-g++-64 -I/home/komche/RD_stage -I/opt/QtNaCl_56/qtbase/include -I/opt/QtNaCl_56/qtbase/include/QtWidgets -I/opt/QtNaCl_56/qtbase/include/QtGui -I/opt/QtNaCl_56/qtbase/include/QtCore -I. -I/opt/nacl_sdk/pepper_47/toolchain/linux_x86_newlib/x86_64-nacl/include/c++/4.4.3 -I/opt/nacl_sdk/pepper_47/toolchain/linux_x86_newlib/x86_64-nacl/include/c++/4.4.3/x86_64-nacl -I/opt/nacl_sdk/pepper_47/toolchain/linux_x86_newlib/x86_64-nacl/include/c++/4.4.3/backward -I/opt/nacl_sdk/pepper_47/toolchain/linux_x86_newlib/lib/gcc/x86_64-nacl/4.4.3/include -I/opt/nacl_sdk/pepper_47/toolchain/linux_x86_newlib/lib/gcc/x86_64-nacl/4.4.3/include-fixed -I/opt/nacl_sdk/pepper_47/toolchain/linux_x86_newlib/x86_64-nacl/include ../anime.h -o moc_anime.cpp
/opt/nacl_sdk/pepper_47/toolchain/linux_x86_newlib/bin/x86_64-nacl-g++ -m64 -c -pipe -O2 -std=gnu++0x -Wall -W -fPIC -DQ_OS_NACL_PEPPER -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -I../../RD_stage -I. -I/opt/QtNaCl_56/qtbase/include -I/opt/QtNaCl_56/qtbase/include/QtWidgets -I/opt/QtNaCl_56/qtbase/include/QtGui -I/opt/QtNaCl_56/qtbase/include/QtCore -I. -I. -I/opt/nacl_sdk/pepper_47/include -I/opt/Qt5.6/qtbase/mkspecs/unsupported/nacl-x86-newlib-g++-64 -o moc_anime.o moc_anime.cpp
/opt/nacl_sdk/pepper_47/toolchain/linux_x86_newlib/bin/x86_64-nacl-g++ -Wl,-O1 -o RD-Artem.nexe main.o service.o originfpl.o anime.o rd-artem.nexe_plugin_import.o qrc_src.o moc_service.o moc_originfpl.o moc_anime.o -L/opt/nacl_sdk/pepper_47/lib/newlib_x86_64/Release -L/opt/QtNaCl_56/qtbase/lib -lQt5Widgets -L/opt/QtNaCl_56/qtbase/plugins/imageformats -lqico -lQt5Gui -lerror_handling -lqtharfbuzzng -lqtfreetype -lQt5Core -lppapi -lppapi_cpp -lqtpcre -lm -lppapi_gles2
/opt/nacl_sdk/pepper_47/lib/newlib_x86_64/Release/libppapi_cpp.a(ppp_entrypoints_x86_64.o): In function PPP_InitializeModule': /mnt/data/b/build/slave/sdk-rel/build/src/out/pepper_47/src/ppapi_cpp/ppp_entrypoints.cc:36: undefined reference to
pp::CreateModule()'
collect2: ld returned 1 exit status
Makefile:162: recipe for target 'RD-Artem.nexe' failed
make: *** [RD-Artem.nexe] Error 1
the main function should be modified.
Have a look at :
https://github.com/msorvig/qt-nacl-manualtests/tree/dev/window_widgets
Hi, thank you for clarification of the main function. I read the your previous description:
@bgrasic here is how the main.cpp should look like
#include
#include
#include "analogclock.h"
AnalogClock *clockA = 0;
// App-provided init and exit functions:
void app_init(int argc, char **argv)
{
clockA = new AnalogClock;
clockA->show();
}
void app_exit()
{
delete clockA;
}
// Register functions with Qt. The type of register function
// selects the QApplicaiton type.
Q_GUI_MAIN(app_init, app_exit);
and inserted some changes in mine project in such way
#include "service.h"
//#include <QApplication>
//#include <QObject>
#include <QtCore>
#include <QtGui>
Service *w = 0;
void app_init(int argc, char **argv)
//int app_init(int argc, char *argv[])
{
//QApplication a(argc, argv);
//Service w;
w = new Service;
//w.show();
w->show();
//return a.exec();
}
void app_exit()
{
delete w;
}
Q_GUI_MAIN(app_init, app_exit);
Then, finaly project has been compiled. Here is the content of buid folder:
After I used run command like this:
sudo docker run --rm -it -p 8000:8000 -v /home/komche/RD_stage:/home/komche/RD_stage theshadowx/qt_nacl:pepper47_qt56 bash -c "cd /home/komche/RD_stage/build && /opt/QtNaCl_56/qtbase/bin/nacldeployqt RD-Artem.nexe --run"
Using Chrome (version 56.0.2924.87 (64-bit)) I linked to http://172.17.0.1:8000/, but unfortunately I saw only white screen with frame and the name of the project((
So do I, and also was reported by some people here. I couldn't debug it as the debug option works just for Mac OS.
I think it's better to contact the person maintaining nacl-wip branch in Qt --> https://github.com/msorvig
Thank you very much for your support. I appreciate that.
Ok, I will try to contact with him, but Have you already contacted with him?
Yes, but not for this issue.
https://github.com/msorvig/qt5-qtbase-nacl/issues
The nacl-wip branch in Qt hasn't been updated since last year.
Hi Ali!
Did you read this article on official Google web-site:
@kom1che thanks for this info.
hope Qt guys will make Qt able to work with WebAssembly.
Here is one more article I've found:
https://qtandeverything.blogspot.com/2017/06/qt-for-web-assembly.html?showComment=1497088985199
Thanks, that's great !!!
@kom1che here is porting webassembly to qt https://github.com/msorvig/qt-webassembly-examples
Hi @kom1che
Sorry for the late answer (gist doesn't send notifications) .
I think there are some issues with the toolchain.
And for the configuration of the source, did you follow the same steps in the script ?
I have done a Docker image of Ubuntu 16.04 with Qt5.6 compiled with pepper_47 toolchain : --> https://hub.docker.com/r/theshadowx/qt_nacl/
To use it :
you should first install docker
https://docs.docker.com/engine/installation/linux/ubuntu/
and then download the image
How to use the image
Create build folder
Generate Makefile
Compile the project
Run the app
In the Chrome browser use this address :
If everything worked well you'll see the app loaded in Chrome browser