Fortran Quellen in Qt Creator einbinden

Alles zu Entwicklungsumgebungen und Editoren für Qt
Antworten
reg_nu44
Beiträge: 7
Registriert: 11. Juli 2012 12:19

Fortran Quellen in Qt Creator einbinden

Beitrag von reg_nu44 »

Ich bin gerade dabei mich darin einzuarbeiten um für unsere Fortranprogramme die grafische Benutzeroberfläche neu zu gestalten.
Das einzelne Compilieren von c++ (g++) und Fortranprogrammen (gfortran) und anschließende Zusammenlinken klappt auch.
Jedoch scheitere ich beim Erstellen eines gemischten Programmes im Qt-Creator.
So wie es aussieht, kompiliert er das Fortranprogramm nicht (es existiert nur die Objektdatei von c++).
Muss ich im Qt-Creator noch irgendwelche Build-Einstellungen vornehmen oder meine Projektdatein ändern?
Ich arbeite auf Windows.
Wäre schön, wenn mir jemand weiterhelfen kann.
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Re: Fortran Quellen in Qt Creator einbinden

Beitrag von franzf »

Kurze Google-Suche "qmake compile fortran" gibt z.B. das:
http://lists.trolltech.com/qt-interest/ ... 897-0.html
Ansonsten kann der creator mit cmake-Projekten umgehen, und cmake sollte AFAIK auch fortran korrekt kompilieren können (ohne Hack im .pro oder patchen der qmake-sourcen).
reg_nu44
Beiträge: 7
Registriert: 11. Juli 2012 12:19

Re: Fortran Quellen in Qt Creator einbinden

Beitrag von reg_nu44 »

Diesen Weg habe ich bereits bestritten. Vielleicht klappt es mit Unix, aber nicht mit Windows.
Wenn ich die Objektdatei für Fortran vorher erstellen klappt es mit dem make, allerdings nutzt er beim zusammenlinken keine Fortranbibliotheken.
Meine Projektdatei sieht so aus:

Code: Alles auswählen

TEMPLATE = app
TARGET = 
DEPENDPATH += .
INCLUDEPATH += .


HEADERS += konvert.h
SOURCES += konvertC.cpp\
        konvertF.f90
Wenn ich die Objektdatei für Fortran nicht vorher erstelle bekomme ich folgende Meldung des Compilers:
12:33:19: Starte "C:\Programme\QtSDK\mingw\bin\mingw32-make.exe"
C:/Programme/QtSDK/mingw/bin/mingw32-make.exe -f Makefile.Debug
mingw32-make.exe[1]: Entering directory `D:/Qt/Beispiele/Fortran_C'
gcc -c -g -Wall -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_GUI_LIB -DQT_CORE_LIB -DQT_HAVE_MMX -DQT_HAVE_3DNOW -DQT_HAVE_SSE -DQT_HAVE_MMXEXT -DQT_HAVE_SSE2 -DQT_THREAD_SUPPORT -DQT_NEEDS_QMAIN -I"c:\Programme\QtSDK\Desktop\Qt\4.8.1\mingw\include\QtCore" -I"c:\Programme\QtSDK\Desktop\Qt\4.8.1\mingw\include\QtGui" -I"c:\Programme\QtSDK\Desktop\Qt\4.8.1\mingw\include" -I"." -I"c:\Programme\QtSDK\Desktop\Qt\4.8.1\mingw\include\ActiveQt" -I"debug" -I"c:\Programme\QtSDK\Desktop\Qt\4.8.1\mingw\mkspecs\win32-g++" -o debug\konvertF.o konvertF.f90
mingw32-make.exe[1]: Leaving directory `D:/Qt/Beispiele/Fortran_C'
gcc: CreateProcess: No such file or directory
mingw32-make.exe[1]: *** [debug/konvertF.o] Error 1
mingw32-make.exe: *** [debug] Error 2

Aber der Pfad für gcc ist angegeben und wenn ich gcc einzeln aufrufe (gcc -c konvertF.f90) funktioniert es auch.

Mein qmake.conf in c:\Programme\QtSDK\Desktop\Qt\4.8.1\mingw\mkspecs\win32-g++

Code: Alles auswählen

#
# qmake configuration for win32-msvc2003
#
# Written for Microsoft C++.NET
#

MAKEFILE_GENERATOR      = MSVC.NET
TEMPLATE                = app
CONFIG                  += qt warn_on release incremental flat link_prl precompile_header autogen_precompile_source copy_dir_files debug_and_release debug_and_release_target
QT                      += core gui
DEFINES                 += UNICODE WIN32 QT_LARGEFILE_SUPPORT
QMAKE_COMPILER_DEFINES  += _MSC_VER=1310 WIN32

QMAKE_CC                = cl
QMAKE_LEX               = flex
QMAKE_LEXFLAGS          =
QMAKE_YACC              = byacc
QMAKE_YACCFLAGS         = -d
QMAKE_CFLAGS            = -nologo -Zm300
QMAKE_CFLAGS_WARN_ON    = -W3
QMAKE_CFLAGS_WARN_OFF   = -W0
QMAKE_CFLAGS_RELEASE    = -O2 -MD
QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO += -O2 -MD -Zi
QMAKE_CFLAGS_DEBUG      = -Zi -MDd
QMAKE_CFLAGS_YACC       =

QMAKE_CXX               = $$QMAKE_CC
QMAKE_CXXFLAGS          = $$QMAKE_CFLAGS
QMAKE_CXXFLAGS_WARN_ON  = $$QMAKE_CFLAGS_WARN_ON -w34100 -w34189
QMAKE_CXXFLAGS_WARN_OFF = $$QMAKE_CFLAGS_WARN_OFF
QMAKE_CXXFLAGS_RELEASE  = $$QMAKE_CFLAGS_RELEASE
QMAKE_CXXFLAGS_RELEASE_WITH_DEBUGINFO += $$QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO
QMAKE_CXXFLAGS_DEBUG    = $$QMAKE_CFLAGS_DEBUG
QMAKE_CXXFLAGS_YACC     = $$QMAKE_CFLAGS_YACC
QMAKE_CXXFLAGS_STL_ON   = -EHsc
QMAKE_CXXFLAGS_STL_OFF  =
QMAKE_CXXFLAGS_RTTI_ON  = -GR
QMAKE_CXXFLAGS_RTTI_OFF =
QMAKE_CXXFLAGS_EXCEPTIONS_ON = -EHsc
QMAKE_CXXFLAGS_EXCEPTIONS_OFF =

QMAKE_INCDIR            =
QMAKE_INCDIR_QT         = $$[QT_INSTALL_HEADERS]
QMAKE_LIBDIR_QT         = $$[QT_INSTALL_LIBS]

QMAKE_RUN_CC            = $(CC) -c $(CFLAGS) $(INCPATH) -Fo$obj $src
QMAKE_RUN_CC_IMP        = $(CC) -c $(CFLAGS) $(INCPATH) -Fo$@ $<
QMAKE_RUN_CC_IMP_BATCH  = $(CC) -c $(CFLAGS) $(INCPATH) -Fo$@ @<<
QMAKE_RUN_CXX           = $(CXX) -c $(CXXFLAGS) $(INCPATH) -Fo$obj $src
QMAKE_RUN_CXX_IMP       = $(CXX) -c $(CXXFLAGS) $(INCPATH) -Fo$@ $<
QMAKE_RUN_CXX_IMP_BATCH = $(CXX) -c $(CXXFLAGS) $(INCPATH) -Fo$@ @<<

QMAKE_LINK              = link
QMAKE_LFLAGS            = /NOLOGO
QMAKE_LFLAGS_RELEASE    = /INCREMENTAL:NO
QMAKE_LFLAGS_RELEASE_WITH_DEBUGINFO = /DEBUG /OPT:REF
QMAKE_LFLAGS_DEBUG      = /DEBUG
QMAKE_LFLAGS_CONSOLE    = /SUBSYSTEM:CONSOLE
QMAKE_LFLAGS_WINDOWS    = /SUBSYSTEM:WINDOWS
QMAKE_LFLAGS_DLL        = /DLL

QMAKE_LIBS_CORE         = kernel32.lib user32.lib shell32.lib uuid.lib ole32.lib advapi32.lib ws2_32.lib
QMAKE_LIBS_GUI          = gdi32.lib comdlg32.lib oleaut32.lib imm32.lib winmm.lib winspool.lib ws2_32.lib ole32.lib user32.lib advapi32.lib
QMAKE_LIBS_NETWORK      = ws2_32.lib
QMAKE_LIBS_OPENGL       = glu32.lib opengl32.lib gdi32.lib user32.lib
QMAKE_LIBS_COMPAT       = advapi32.lib shell32.lib comdlg32.lib user32.lib gdi32.lib ws2_32.lib

QMAKE_LIBS_QT_ENTRY     = -lqtmain

QMAKE_MOC               = $$[QT_INSTALL_BINS]\\moc.exe
QMAKE_UIC               = $$[QT_INSTALL_BINS]\\uic.exe
QMAKE_IDC               = $$[QT_INSTALL_BINS]\\idc.exe

QMAKE_IDL               = midl
QMAKE_LIB               = lib /NOLOGO
QMAKE_RC                = rc

QMAKE_ZIP               = zip -r -9

QMAKE_COPY              = copy /y
QMAKE_COPY_DIR          = xcopy /s /q /y /i
QMAKE_MOVE              = move
QMAKE_DEL_FILE          = del
QMAKE_DEL_DIR           = rmdir
QMAKE_CHK_DIR_EXISTS    = if not exist
QMAKE_MKDIR             = mkdir

VCPROJ_EXTENSION        = .vcproj
VCSOLUTION_EXTENSION    = .sln
VCPROJ_KEYWORD  = Qt4VSv1.0
load(qt_config)
Vielleicht muss ich hier noch irgendwelche Flags ändern, da ja offensichtlich aus meiner Fortran-datei keine Objektdatei erstellt wird.

Die Fotranbibliotheken habe ich mit LIBS in der .pro Datei eingebunden. Das geht also.

Über weitergehende Hilfe wäre ich sehr dankbar.
reg_nu44
Beiträge: 7
Registriert: 11. Juli 2012 12:19

Re: Fortran Quellen in Qt Creator einbinden

Beitrag von reg_nu44 »

Mit dem richtigen Compiler klappt es dann auch unter Windows und die Lösung ist wie bereits darauf hingewiesen ganz einfach.
Antworten