windows-projekt unter linux übersetzen

Verschiedenes zu Qt
drewle
Beiträge: 38
Registriert: 4. März 2008 20:59
Kontaktdaten:

windows-projekt unter linux übersetzen

Beitrag von drewle »

Hallo,
ich habe ein Projekt, welches soweit unter Windows ohne Fehler übersetzt werden kann.
Ich habe jetzt das Projekt genommen und versucht unter Linux zu übersetzen. Hierbei habe ich folgende Fehlermeldung bekommen:

Code: Alles auswählen

Running build steps for project internet...
Starting: /usr/bin/qmake /home/andreas/programing/qt/internet/internet.pro -spec /usr/share/qt4/mkspecs/linux-g++-64 -r CONFIG+=debug 
Exited with code 0.
Could not find make command: make in the build environment
Error while building project internet
When executing build step 'Make'
Canceled build.
Weiß jemand, was falsch ist?
Ich habe ein kleines Projekt unter Linux erstellt und ohne Probleme compiliert. (Die Installation von QT unter Linux scheint ok zu sein und make wird dann wohl auch gefunden!)

Schon mal danke,
Drew
Hic Rhodos Hic Salta
http://www.hic-net.de
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Einen Compiler sollte man auch unter Linux erstmal haben bevor man versucht was zu kompilieren :D
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag von franzf »

Christian81 hat geschrieben:Einen Compiler sollte man auch unter Linux erstmal haben bevor man versucht was zu kompilieren :D
Och muss ich das jetzt echt sagen?
"make" ist kein Compiler :P

Er braucht halt einfach ein die ganzen *-dev-Pakete. Was für ein "Linux" hast du denn? Dann kann man dir sagen was du genau installieren musst.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

franzf hat geschrieben:
Christian81 hat geschrieben:Einen Compiler sollte man auch unter Linux erstmal haben bevor man versucht was zu kompilieren :D
Och muss ich das jetzt echt sagen?
"make" ist kein Compiler :P
tztz :)
Wenn er kein make hat hat er auch einen gcc, aber Du hast natürlich recht.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
drewle
Beiträge: 38
Registriert: 4. März 2008 20:59
Kontaktdaten:

Beitrag von drewle »

Hallo,
wie schon erwähnt, ein einfaches Beispiel, das ich unter Lunx erstellt habe kann ich übersetzen. (Ich gehe darum davon aus, dass ich einen Compiler habe.;-))
Die Pfade stehen doch im Makefile, und das wird jedesmal neu erstellt. (Ich hab's jetzt auch schon mal vor dem kompilieren gelöscht. Ohen Erfolg!) Ich bin darum davon ausgegangen, das ich das pro-File von Windows einfach übernehman kann.

Hat jemand von Euch schon mal das gleiche Projekt unter Windows und Linux übersetzt? Was muß man anpassen?

danke,
Drew
Hic Rhodos Hic Salta
http://www.hic-net.de
drewle
Beiträge: 38
Registriert: 4. März 2008 20:59
Kontaktdaten:

Beitrag von drewle »

Hallo,
ich hab die neueste Open Suse. Ich hab einfach mal alles installiert, was die Buchstabenfolge qt4 enthällt. Dazu noch alles, was gcc oder cpp enthällt.
Hic Rhodos Hic Salta
http://www.hic-net.de
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag von franzf »

Wenn du keine Windows-Spezifischen Befehle verwendest, solltest du ohne Probleme das .pro direkt unter Windows verwenden können.
Teste mal ob du "make" installiert hast.
z.b.

Code: Alles auswählen

$ which make
$ make -version
Und ein einfaches Programm kannst du übersetzen? Also ist g++ vorhanden?
Und sämtliche Makefiles hast du ja schon entfernt. Liegen dann auch keine mehr in eventuellen Unterordnern?

Versuch es einfach mal mit einem frischen Qt4-Projekt.
RavenIV
Beiträge: 267
Registriert: 21. Januar 2009 14:24
Wohnort: Waldshut

Beitrag von RavenIV »

Also bei mir klappt das.
Hab ein Qt-Projekt unter Windows erstellt, kompiliert, läuft.
Dann hab das Ganze nach Linux kopiert und dort erstellt, läuft.

Als Einziges musste ich die Pfade in der .pro anpassen.
Schliesslich bin ich auf die Möglichkeit gestossen, Scopes zu verwenden.
Da kann man einen Bereich für Windows und einen Bereich für Unix (Linux) anlegen und spezifische Sachen angeben.

Habe beides Mal mit Eclipse gearbeitet. Für Windows mit MinGW, für Linux mit gcc.
Linux, das längste Text-Adventure aller Zeiten
drewle
Beiträge: 38
Registriert: 4. März 2008 20:59
Kontaktdaten:

Beitrag von drewle »

@ franzf

Code: Alles auswählen

andreas@linux-3rfe:~> which make
/usr/bin/make
andreas@linux-3rfe:~> make -version
GNU Make 3.81
Copyright (C) 2006  Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.

This program built for x86_64-unknown-linux-gnu
'make' scheint vorhanden zu sein.

@RavenIV
welche Pfade im pro musstest Du anpassen? Bei mir sind da keine drin:

Code: Alles auswählen

#-------------------------------------------------
#
# Project created by QtCreator 2009-09-16T19:54:21
#
#-------------------------------------------------

QT       += network

TARGET = internet
TEMPLATE = app


SOURCES += main.cpp\
        mainwindow.cpp

HEADERS  += mainwindow.h

FORMS    += mainwindow.ui
Vielleicht, weil ich alles im gleichen Verzeichnis hab. (Das Projekt ist noch nicht so groß.)

Danke für Eure Hilfe
Hic Rhodos Hic Salta
http://www.hic-net.de
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag von franzf »

RavenIV hat geschrieben:Als Einziges musste ich die Pfade in der .pro anpassen.
Inwieweit Pfade anpassen? Für zusätzliche Includes oder Libs sind Scopes sicherlich eine Lösung.
Wenn es dir um die Anpassung der Pfad-Trennzeichen geht:
qmake versteht problemlos unter Windows auch das "/", da braucht es im .pro kein "", wie für z.B. die Windows-Befehlseingabe usw.
drewle
Beiträge: 38
Registriert: 4. März 2008 20:59
Kontaktdaten:

Beitrag von drewle »

Ok,
ich habe jetzt mal meine cpp, h und ui Files in ein neues Projekt kopiert. (Hier gab es Files mit den gleichen Namen.)
Make wurde dann anscheinen gefunden. Zumindest gab es eine Fehlermeldung, die sich schon auf den Inhalt des Codes bezogen.
Ich hab dann noch fest gestellt, dass die Zeile:

Code: Alles auswählen

QT       += network
in dem neuen pro gefehlt hat. (wo kommt die den her?)
Schon ging es wieder ein Schritt weiter...
Jetzt kennt er anscheinend sprintf nicht!?

Ich bin dann noch über die Datei pro.user gestolpert. Die enthielt tatsächlich noch einen Pfad auf C: für make. Umbenennen in pro.user.save hat aber nichts gepracht. Löschen aber schon. sprintf wird aber auch nicht erkannt.

Woher kommt das pro.user?
Woher kommt die Zeile QT +=... im pro
Wieso gehen die Pfade für sprintf verloren?
Hic Rhodos Hic Salta
http://www.hic-net.de
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag von franzf »

drewle hat geschrieben:Woher kommt das pro.user?
Woher kommt die Zeile QT +=... im pro
Wieso gehen die Pfade für sprintf verloren?
1) "pro.user" kommt vllt. von deiner IDE unter Windows? (K.A. aber sicherlich nicht von Qt ;))
2) Die kommt vom User selber (oder wieder: IDE-Magic ;))
Qt nimmt für ein Standard-Projekt nur QtGui und QtCore. Willst du mehr musst du das dem qmake irgendwie mitteilen, das geht am einfachsten über das .pro-file. Das macht qmake nicht automatisch, da ist Handarbeit angesagt.
3) Dein Compiler unter Windows hat wohl automatisch einige (alle?) C-Standard-Header eingebunden, kann das sein?
Im code ein einfaches

Code: Alles auswählen

#include <cstdio>
sollte Wunder bewirken :)
RavenIV
Beiträge: 267
Registriert: 21. Januar 2009 14:24
Wohnort: Waldshut

Beitrag von RavenIV »

franzf hat geschrieben:
RavenIV hat geschrieben:Als Einziges musste ich die Pfade in der .pro anpassen.
Inwieweit Pfade anpassen? Für zusätzliche Includes oder Libs sind Scopes sicherlich eine Lösung.
Wenn es dir um die Anpassung der Pfad-Trennzeichen geht:
qmake versteht problemlos unter Windows auch das "/", da braucht es im .pro kein "", wie für z.B. die Windows-Befehlseingabe usw.
Bei mir sind die include-Pfade und die lib-Pfade bei Windows und Linux unterschiedlich.
Einmal "C:\Windows-Pfad-zur-Lib\libname.lib" und "/linux-pfad-zur-lib/libname.a"
Und bei den includes ebenso.

Wo sollte sowas denn sonst hin?
Linux, das längste Text-Adventure aller Zeiten
drewle
Beiträge: 38
Registriert: 4. März 2008 20:59
Kontaktdaten:

Beitrag von drewle »

Yep, das wirkt Wunder.;-)
Ich kann mein Projekt übersetzen und es funktioniert auch noch.
Das pro.user ist auch bei meinem, unter Linux erstellten Projekt vorhandnen. Wurde aber anscheinend in beiden Fällen (W und L) automatisch erzeugt.

Ich bin soweit glücklich. Vielen Dank für Eure Hilfe!
Hic Rhodos Hic Salta
http://www.hic-net.de
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag von franzf »

drewle hat geschrieben:Das pro.user ist auch bei meinem, unter Linux erstellten Projekt vorhandnen. Wurde aber anscheinend in beiden Fällen (W und L) automatisch erzeugt.
AHHH! Du verwendest qt-creator :P
Hab jetzt auch gesehen, dass der da ein ".user" anlegt.
Es gibt bei mir auch ein "CMakeLists.txt.user". Das ist einfach eine in ein qt-creator-eigenes XML transformierte Projekt-Beschreibung.
Sowas gibt man aber nicht mit, wenn man sein Programm veröffentlicht :)

@Raven:
Natürlich kommt sowas ins .pro!
Es war mir einfach nicht klar, was du an deinen "Pfaden" ändern willst. Das übliche, was Pfade unter Linux und Windows unterscheidet ist einfach das "/", drum hab ich da nachgefragt...
Antworten