team-phoenix / Phoenix

A multi-system emulator and library manager designed to be both powerful and easy to use.
http://phoenix.vg
GNU General Public License v2.0
377 stars 39 forks source link

Building on Linux (Debian) #291

Open sergiobenrocha2 opened 8 years ago

sergiobenrocha2 commented 8 years ago

I'm trying to figure how to build on Debian, and I'm getting some trouble.

There should be some place to the libs you need:

apt-get install libsamplerate0-dev qtdeclarative5-dev libqt5svg5-dev libquazip5-dev libquazip5-headers qt5-qmake qtquick1-5-dev qml-module-qtgraphicaleffects qml-module-qtquick-controls

First problem:

In file included from ../../backend/control/gameconsole.h:11:0,
                 from ../../backend/backendplugin.cpp:10:
../../backend/consumer/audiooutput.h:5:24: fatal error: samplerate.h: No such file or directory
 #include "samplerate.h"
                        ^
compilation terminated.

It should be

 #include <samplerate.h>

Since it's header from system, not local.

Also, it's kinda hard to build with quazip lib from the system. It should be linked against -lquazip5 on debian/ubuntu

For some reason, it's selecting Qt4 qmake by default, so

QT_SELECT=qt5 qmake ../
sergiobenrocha2 commented 8 years ago

What's this?

Phoenix 
D 04:17:00:478 Library::PhxPaths::initPaths():124: Installed mode 
D 04:17:00:478 main():91: Phoenix v0.0.1-pre-alpha-2-gfb73282-dirty 
W 04:17:00:485 unknown():0: QQmlApplicationEngine failed to load component 
               [unknown:0 unknown()]
W 04:17:00:485 unknown():0: qrc:/Phoenix/Phoenix.qml:5 module "QtGraphicalEffects" is not installed
qrc:/Phoenix/Phoenix.qml:7 module "vg.phoenix.backend" is not installed
qrc:/Phoenix/Phoenix.qml:1 module "QtQuick" is not installed
qrc:/Phoenix/Phoenix.qml:2 module "QtQuick.Controls" is not installed
qrc:/Phoenix/Phoenix.qml:3 module "QtQuick.Layouts" is not installed
qrc:/Phoenix/Phoenix.qml:4 module "QtQuick.Window" is not installed
qrc:/Phoenix/Phoenix.qml:5 module "QtGraphicalEffects" is not installed
qrc:/Phoenix/Phoenix.qml:7 module "vg.phoenix.backend" is not installed
qrc:/Phoenix/Phoenix.qml:1 module "QtQuick" is not installed
qrc:/Phoenix/Phoenix.qml:2 module "QtQuick.Controls" is not installed
qrc:/Phoenix/Phoenix.qml:3 module "QtQuick.Layouts" is not installed
qrc:/Phoenix/Phoenix.qml:4 module "QtQuick.Window" is not installed
qrc:/Phoenix/Phoenix.qml:5 module "QtGraphicalEffects" is not installed
qrc:/Phoenix/Phoenix.qml:7 module "vg.phoenix.backend" is not installed
qrc:/Phoenix/Phoenix.qml:1 module "QtQuick" is not installed
qrc:/Phoenix/Phoenix.qml:2 module "QtQuick.Controls" is not installed
qrc:/Phoenix/Phoenix.qml:3 module "QtQuick.Layouts" is not installed
qrc:/Phoenix/Phoenix.qml:4 module "QtQuick.Window" is not installed
qrc:/Phoenix/Phoenix.qml:5 module "QtGraphicalEffects" is not installed
qrc:/Phoenix/Phoenix.qml:7 module "vg.phoenix.backend" is not installed
qrc:/Phoenix/Phoenix.qml:1 module "QtQuick" is not installed
qrc:/Phoenix/Phoenix.qml:2 module "QtQuick.Controls" is not installed
qrc:/Phoenix/Phoenix.qml:3 module "QtQuick.Layouts" is not installed
qrc:/Phoenix/Phoenix.qml:4 module "QtQuick.Window" is not installed
qrc:/Phoenix/Phoenix.qml:5 module "QtGraphicalEffects" is not installed
qrc:/Phoenix/Phoenix.qml:7 module "vg.phoenix.backend" is not installed
qrc:/Phoenix/Phoenix.qml:1 module "QtQuick" is not installed
qrc:/Phoenix/Phoenix.qml:2 module "QtQuick.Controls" is not installed
qrc:/Phoenix/Phoenix.qml:3 module "QtQuick.Layouts" is not installed
qrc:/Phoenix/Phoenix.qml:4 module "QtQuick.Window" is not installed
qrc:/Phoenix/Phoenix.qml:5 module "QtGraphicalEffects" is not installed
qrc:/Phoenix/Phoenix.qml:7 module "vg.phoenix.backend" is not installed
qrc:/Phoenix/Phoenix.qml:1 module "QtQuick" is not installed
qrc:/Phoenix/Phoenix.qml:2 module "QtQuick.Controls" is not installed
qrc:/Phoenix/Phoenix.qml:3 module "QtQuick.Layouts" is not installed
qrc:/Phoenix/Phoenix.qml:4 module "QtQuick.Window" is not installed

               [unknown:0 unknown()]

I did:

mkdir build
cd build/
QT_SELECT=qt5 qmake ../ PREFIX=/usr/local
make
sudo make install
athairus commented 8 years ago

Hi, have you read the dependencies page on the wiki? It points out two things you need:

Also, about quazip... because it's not available in package managers for all 3 OSes that we support, we made the decision to include it as a submodule. If an update ever comes out (2 years and counting), we'll be on top of it, rest assured!

sergiobenrocha2 commented 8 years ago

For my future reference, trying to build with system libs:

Index: Phoenix/backend/backend.pro
===================================================================
--- Phoenix.orig/backend/backend.pro
+++ Phoenix/backend/backend.pro
@@ -44,8 +44,8 @@ include( msvc.pri )
     unix:        INCLUDEPATH += /usr/include/SDL2                                        # Linux

     # Include externals
-    DEFINES += QUAZIP_STATIC
-    INCLUDEPATH += ../externals/quazip/quazip
+    #DEFINES += QUAZIP_STATIC
+    #INCLUDEPATH += ../externals/quazip/quazip

     # Include our stuff
     INCLUDEPATH += consumer control core input pipeline util
@@ -129,7 +129,7 @@ include( msvc.pri )
     ##

     # Externals
-    LIBS += -L../externals/quazip/quazip
+    #LIBS += -L../externals/quazip/quazip

     # SDL2
     macx: LIBS += -L/usr/local/lib -L/opt/local/lib # Homebrew, MacPorts
@@ -138,11 +138,11 @@ include( msvc.pri )
         LIBS += /LIBPATH:$$SAMPLERATEBASE\lib

         CONFIG( debug, debug|release ): {
-            LIBS += /LIBPATH:../externals/quazip/quazip/debug
+            #LIBS += /LIBPATH:../externals/quazip/quazip/debug
         }

         else {
-            LIBS += /LIBPATH:../externals/quazip/quazip/release
+            #LIBS += /LIBPATH:../externals/quazip/quazip/release
         }
     }

@@ -151,7 +151,8 @@ include( msvc.pri )
     ##

     # Externals
-    LIBS += -lquazip
+    #LIBS += -lquazip
+    LIBS += -lquazip5

     !msvc {
         # SDL 2
Index: Phoenix/frontend/cpp/frontendcommon.h
===================================================================
--- Phoenix.orig/frontend/cpp/frontendcommon.h
+++ Phoenix/frontend/cpp/frontendcommon.h
@@ -13,8 +13,8 @@

 #include <memory>

-#include "quazip.h"
-#include "JlCompress.h"
+#include <quazip5/quazip.h>
+#include <quazip5/JlCompress.h>
 #include "zlib.h"
 #include "logging.h"

Index: Phoenix/frontend/cpp/library/fileinfo/archivefile.h
===================================================================
--- Phoenix.orig/frontend/cpp/library/fileinfo/archivefile.h
+++ Phoenix/frontend/cpp/library/fileinfo/archivefile.h
@@ -3,8 +3,8 @@
 #include "frontendcommon.h"

 #include "logging.h"
-#include "quazipfile.h"
-#include "quazip.h"
+#include <quazip5/quazipfile.h>
+#include <quazip5/quazip.h>

 class ArchiveFile {
     public:
Index: Phoenix/frontend/deployment.pri
===================================================================
--- Phoenix.orig/frontend/deployment.pri
+++ Phoenix/frontend/deployment.pri
@@ -46,11 +46,11 @@
     !CONFIG( static, static ) {
         win32: TARGETDEPS += ../backend/phoenix-backend.dll ../externals/quazip/quazip/libquazip.a
         macx: TARGETDEPS += ../backend/libphoenix-backend.dylib ../externals/quazip/quazip/libquazip.a
-        unix: !macx: TARGETDEPS += ../backend/libphoenix-backend.so ../externals/quazip/quazip/libquazip.a
+        unix: !macx: TARGETDEPS += ../backend/libphoenix-backend.so
     } else {
         win32: TARGETDEPS += ../backend/libphoenix-backend.a ../externals/quazip/quazip/libquazip.a
         macx: TARGETDEPS += ../backend/libphoenix-backend.a ../externals/quazip/quazip/libquazip.a
-        unix: !macx: TARGETDEPS += ../backend/libphoenix-backend.a ../externals/quazip/quazip/libquazip.a
+        unix: !macx: TARGETDEPS += ../backend/libphoenix-backend.a
     }

     # Make sure it gets installed
Index: Phoenix/frontend/frontend.pro
===================================================================
--- Phoenix.orig/frontend/frontend.pro
+++ Phoenix/frontend/frontend.pro
@@ -67,8 +67,8 @@ include( ../backend/msvc.pri )
     unix:        INCLUDEPATH += /usr/include/SDL2                                        # Linux

     # Include externals
-    DEFINES += QUAZIP_STATIC
-    INCLUDEPATH += ../externals/quazip/quazip
+#    DEFINES += QUAZIP_STATIC
+#    INCLUDEPATH += ../externals/quazip/quazip

     # Include our stuff
     INCLUDEPATH += ../backend ../backend/consumer ../backend/control ../backend/core ../backend/input ../backend/pipeline ../backend/util
@@ -137,7 +137,7 @@ include( ../backend/msvc.pri )
     ##

     # Externals
-    LIBS += -L../externals/quazip/quazip
+#    LIBS += -L../externals/quazip/quazip

     # Our stuff
     LIBS += -L../backend
@@ -149,12 +149,12 @@ include( ../backend/msvc.pri )
         LIBS += /LIBPATH:$$SAMPLERATEBASE\lib

         CONFIG( debug, debug|release ): {
-            LIBS += /LIBPATH:../externals/quazip/quazip/debug
+            #LIBS += /LIBPATH:../externals/quazip/quazip/debug
             LIBS += /LIBPATH:../backend/debug
         }

         else {
-            LIBS += /LIBPATH:../externals/quazip/quazip/release
+            #LIBS += /LIBPATH:../externals/quazip/quazip/release
             LIBS += /LIBPATH:../backend/release
         }
     }
@@ -164,7 +164,8 @@ include( ../backend/msvc.pri )
     ##

     # Always link quazip statically
-    LIBS += -lquazip
+    #LIBS += -lquazip
+    LIBS += -lquazip5

     # Use phoenix-backend.a if we're using static Qt
     # Static Qt will force the backend to be built statically (as static Qt doesn't support loadable plugins)
Index: Phoenix/phoenix.pro
===================================================================
--- Phoenix.orig/phoenix.pro
+++ Phoenix/phoenix.pro
@@ -1,10 +1,10 @@
 TEMPLATE = subdirs

-SUBDIRS += quazip
+# SUBDIRS += quazip
 SUBDIRS += backend
 SUBDIRS += frontend

-quazip.subdir = externals/quazip/quazip
+# quazip.subdir = externals/quazip/quazip
 backend.subdir = backend
 frontend.subdir = frontend

@@ -12,8 +12,8 @@ frontend.subdir = frontend
 CONFIG += x86_64

 # Ensure that frontend is built last
-frontend.depends = quazip backend
-backend.depends = quazip
+frontend.depends = backend
+# backend.depends = quazip

 # Make portable target available at the topmost Makefile
 portable.CONFIG += recursive

And it needs at least Qt 5.6.x