Closed rain0r closed 5 years ago
I'll push the debian build files in the next days in the repo....
1.) To just create a build, download Qt5 development tools and Qt5 Creator. Open the .pro in QtCreator and a build environment will be automatically created 2.) To build a debian package, download https://github.com/asdfjkl/jerry/releases/download/v3.1.0/jerry_3.1.0.orig.tar.gz extract, install pbuilder and run pdebuild in the extracted root directory.
Hi Dominik @asdfjkl ,
I'm actually having a problem compiling this too. Specifically : main_window.cpp:426:58: error: address of overloaded function 'valueChanged' does not match required type
line 426 From main_window.cpp File:
connect(this->spinMultiPv, QOverload\
I'm not exactly sure how to change this section to be able to compile it. I tried removing the address ampersand, but received the following error : call to non-static member function without an object argument
Any insight would be helpful. Cheers
There are two signals valueChanged() for QSpinBox which is why the overload is required. From memory, there are three possibilities:
connect(this->spinMultiPv, static_cast<void (QSpinBox::*)(int)>(&QSpinBox::valueChanged), this->modeController, &ModeController::onMultiPVChanged);
Interesting. I double checked the pro file and it defaulted to C++11. I was able to modify it to the following, to become c++11 compatible:
connect(this->spinMultiPv, QOverload
And you are right, after adding CONFIG += c++14 to the .pro file, it works fine as is. But then I ran into similar linker problems in both cases (c++11 and c++14):
NOTE: a missing vtable usually means the first non-inline virtual member function has no definition. ld: symbol(s) not found for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation)
hard to guess from here. Are you building the debian source package, or within QtCreator? If the later, one guess would be that your .pro file is not correct, i.e. that there are source-files missing, that source files are not listed in the correct order of dependency, or that libraries (such as +svg etc) are not correctly stated. Reference file is jerry3.pro.
I figured out the issue. I am actually building on mac OSx. So, the problem was arising from various/resource_finder.cpp lines 9-17:
QString appPath = "/usr/share/jerry/";
return appPath;
QString appPath = QCoreApplication::applicationDirPath();
return appPath.append(QDir::separator());
Slightly Altering this , allows Mac users to compile:
QString appPath = "/usr/share/jerry/";
return appPath;
QString appPath = QCoreApplication::applicationDirPath();
return appPath.append(QDir::separator());
Please, note that this also requires modification of model/internalengine.cpp, otherwise, the internal engine will not be found for mac users. Something like this should work:
QString path = QString("/usr/games/stockfish");
this->setPath(path);
QString path = ResourceFinder::getPath().append("/engine/");
path = path.append(QString("stockfish.exe"));
path = QString('"').append(path).append('"');
path = QDir::toNativeSeparators(QDir::cleanPath(path));
this->setPath(path);
QString path = ResourceFinder::getPath().append("/engine/");
path = path.append(QString("stockfish"));
path = QString('"').append(path).append('"');
path = QDir::toNativeSeparators(QDir::cleanPath(path));
this->setPath(path);
Hi, the directive #elseif in internalengine.cpp is not defined and causes the compilation to fail on linux, I suggest replacing it with #elif
Thanks
If anyone encounters other build problems in Linux, please reopen a new issue.
How can I build Jerry myself on Linux?
I tried to pull some information on this from
build_ubuntu_64.sh
but it's just copying files and creating folders.