Qt Kaynak Kodundan Derleme

Bu konuyu okuyanlar

Ben Kenobi

Dekan
Katılım
6 Kasım 2011
Mesajlar
7,336
Reaksiyon puanı
3,155
Puanları
113
Windows'ta Qt'yi kaynak kodundan derleyebilmeyi sağlayan, kendim yazdığım cmd kodlarını paylaşıyorum.
Bu dosyayı Qt.cmd ismiyle kaydedin.
Derleyicinizin bulunduğu klasörü CompilerDir değişkeninde ayarlayın.
Daha sonra QT kaynak kodlarını çıkarttığınız klasörü QtSourceDir değişkeninde ayarlayın.
Son olarak derlenmiş Qt kütüphanelerini nerede görmek istiyorsanız QtOutputDir değişkeninde ayarlayın.
Sisteminizde yüklü ise şayet, Python ve Perl klasörlerini de PythonDir ve PerlDir değişkenlerinde ayarlayabilirsiniz.
Opsiyonel olarak configure -prefix ile başlayan komutları kendi isteğinize göre modifiye edebilirsiniz.

Derleyici olarak Visual Studio ile gelen MSVC++ yerine hem performans hem de standartları daha iyi desteklemesi adına MinGW öneririm.
Bunun için şu adreste bulunan internet bazlı yükleyici indirin ve çalıştırın. (32 bit ve 64 bit sürümleri mevcut)
MinGW-w64 - for 32 and 64 bit Windows
Kod:
@echo off

:: -------------------------------------------------------------------------------------------------
:: Configure Here Before Running Script [Required] ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
:: -------------------------------------------------------------------------------------------------
set CompilerDir=C:\MinGW\mingw64
set QtSourceDir=C:\Qt\Source\5.9.0
set QtOutputDir=C:\Qt\5.9_LTCG

:: -------------------------------------------------------------------------------------------------
:: Configure Here Before Running Script [Optional]
:: -------------------------------------------------------------------------------------------------
set PythonDir=C:\Python
set PerlDir=C:\Perl64

:: -------------------------------------------------------------------------------------------------
:: Set Environment Variables
:: -------------------------------------------------------------------------------------------------
set LANG=en
set PATH=%SystemRoot%;%SystemRoot%\System32;%CompilerDir%\bin;%CompilerDir%\opt\bin;%QtSourceDir%\qtbase\bin;%QtSourceDir%\gnuwin32\bin;%PythonDir%;%PythonDir%\Scripts;%PerlDir%\bin;%PerlDir%\site\bin

:: -------------------------------------------------------------------------------------------------
:: Patch Before Process
:: -------------------------------------------------------------------------------------------------
set PatchedFile=%QtSourceDir%\qtbase\mkspecs\win32-g++\qmake.conf
if exist %PatchedFile%.original (
copy /y "%PatchedFile%.original" "%PatchedFile%"
)
else (
copy "%PatchedFile%" "%PatchedFile%.original"
)

echo.>>%PatchedFile%
echo QMAKE_CFLAGS_RELEASE -= -O2>>%PatchedFile%
echo QMAKE_CXXFLAGS_RELEASE -= -O2>>%PatchedFile%
echo QMAKE_LFLAGS_RELEASE -= -O2>>%PatchedFile%
echo QMAKE_CFLAGS_RELEASE += -O3 -fomit-frame-pointer -frename-registers -march=nocona -mtune=generic>>%PatchedFile%
echo QMAKE_CXXFLAGS_RELEASE += -O3 -fomit-frame-pointer -frename-registers -march=nocona -mtune=generic>>%PatchedFile%
echo QMAKE_LFLAGS_RELEASE += -O3 -fomit-frame-pointer -frename-registers -march=nocona -mtune=generic>>%PatchedFile%

:: -------------------------------------------------------------------------------------------------
:: Configure - Make - MakeInstall
:: -------------------------------------------------------------------------------------------------
if exist %QtOutputDir% rmdir /s /q %QtOutputDir%
mkdir %QtOutputDir%

mkdir shadow-build
cd shadow-build

cmd /C "%QtSourceDir%\configure -prefix %QtOutputDir% -release -shared -platform win32-g++ -c++std c++1z -opensource -confirm-license -qt-freetype -qt-libjpeg -qt-libpng -qt-pcre -qt-zlib -skip qtlocation -skip qt3d -sql-sqlite -opengl desktop -make libs -nomake examples -nomake tests -nomake tools"
if ERRORLEVEL 1 goto Error

cmd /C "%CompilerDir%\bin\mingw32-make -k -j16"
if ERRORLEVEL 1 goto Error

cmd /C "%CompilerDir%\bin\mingw32-make -k install"
if ERRORLEVEL 1 goto Error

:: -------------------------------------------------------------------------------------------------
:: End
:: -------------------------------------------------------------------------------------------------
echo.
echo SUCCESS - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
goto Exit

:Error
echo.
echo ERROR ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !
goto Exit

:Exit
cd..
rmdir /s /q shadow-build
rmdir /s /q %QtOutputDir%
echo
set /p temp=""
 

Ben Kenobi

Dekan
Katılım
6 Kasım 2011
Mesajlar
7,336
Reaksiyon puanı
3,155
Puanları
113
Scriptte bir yanlışlık var.
Maalesef hata kısmında yapması gereken bazı şeyleri hata olmadan da yaptırdığım gözden kaçmış.
Düzeltiyorum.

Kod:
@echo off

:: -------------------------------------------------------------------------------------------------
:: Configure Here Before Running Script [Required] ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
:: -------------------------------------------------------------------------------------------------
set CompilerDir=C:\MinGW\mingw64
set QtSourceDir=C:\Qt\Source\5.9.0
set QtOutputDir=C:\Qt\5.9_Static

:: -------------------------------------------------------------------------------------------------
:: Configure Here Before Running Script [Optional]
:: -------------------------------------------------------------------------------------------------
set PythonDir=C:\Python
set PerlDir=C:\Perl64

:: -------------------------------------------------------------------------------------------------
:: Set Environment Variables
:: -------------------------------------------------------------------------------------------------
set LANG=en
set PATH=%SystemRoot%;%SystemRoot%\System32;%CompilerDir%\bin;%CompilerDir%\opt\bin;%QtSourceDir%\qtbase\bin;%QtSourceDir%\gnuwin32\bin;%PythonDir%;%PythonDir%\Scripts;%PerlDir%\bin;%PerlDir%\site\bin

:: -------------------------------------------------------------------------------------------------
:: Patch Before Process
:: -------------------------------------------------------------------------------------------------
set PatchedFile=%QtSourceDir%\qtbase\mkspecs\win32-g++\qmake.conf
if exist %PatchedFile%.original (
copy /y "%PatchedFile%.original" "%PatchedFile%"
)
else (
copy "%PatchedFile%" "%PatchedFile%.original"
)

echo.>>%PatchedFile%
echo QMAKE_CFLAGS_RELEASE -= -O2>>%PatchedFile%
echo QMAKE_CXXFLAGS_RELEASE -= -O2>>%PatchedFile%
echo QMAKE_LFLAGS_RELEASE -= -O2>>%PatchedFile%
echo QMAKE_CFLAGS_RELEASE += -O3 -fomit-frame-pointer -frename-registers -march=nocona -mtune=generic>>%PatchedFile%
echo QMAKE_CXXFLAGS_RELEASE += -O3 -fomit-frame-pointer -frename-registers -march=nocona -mtune=generic>>%PatchedFile%
echo QMAKE_LFLAGS_RELEASE += -O3 -fomit-frame-pointer -frename-registers -march=nocona -mtune=generic>>%PatchedFile%

:: -------------------------------------------------------------------------------------------------
:: Configure - Make - MakeInstall
:: -------------------------------------------------------------------------------------------------
if exist %QtOutputDir% rmdir /s /q %QtOutputDir%
mkdir %QtOutputDir%

mkdir shadow-build
cd shadow-build

cmd /C "%QtSourceDir%\configure -prefix %QtOutputDir% -release -shared -platform win32-g++ -c++std c++1z -opensource -confirm-license -qt-freetype -qt-libjpeg -qt-libpng -qt-pcre -qt-zlib -skip qtlocation -skip qt3d -sql-sqlite -opengl desktop -make libs -nomake examples -nomake tests -nomake tools"
if ERRORLEVEL 1 goto Error

cmd /C "%CompilerDir%\bin\mingw32-make -k -j16"
if ERRORLEVEL 1 goto Error

cmd /C "%CompilerDir%\bin\mingw32-make -k install"
if ERRORLEVEL 1 goto Error

:: -------------------------------------------------------------------------------------------------
:: End
:: -------------------------------------------------------------------------------------------------
echo.
echo SUCCESS - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
goto Exit

:Error
echo.
echo ERROR ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !
echo
rmdir /s /q %QtOutputDir%
set /p temp=""
goto Exit

:Exit
rmdir /s /q shadow-build
 
Üst