mirror of
https://github.com/xiaoyifang/goldendict-ng.git
synced 2024-11-27 19:24:08 +00:00
655 lines
15 KiB
Prolog
655 lines
15 KiB
Prolog
TEMPLATE = app
|
|
TARGET = goldendict
|
|
VERSION = 22.2.alpha
|
|
|
|
# Generate version file. We do this here and in a build rule described later.
|
|
# The build rule is required since qmake isn't run each time the project is
|
|
# rebuilt; and doing it here is required too since any other way the RCC
|
|
# compiler would complain if version.txt wouldn't exist (fresh checkouts).
|
|
|
|
system(git describe --tags --always --dirty): hasGit=1
|
|
|
|
!isEmpty(hasGit){
|
|
GIT_HASH=$$system(git rev-parse --short HEAD )
|
|
}
|
|
system(echo $${VERSION}.$${GIT_HASH} > version.txt)
|
|
|
|
# DEPENDPATH += . generators
|
|
INCLUDEPATH += .
|
|
|
|
QT += core \
|
|
gui \
|
|
xml \
|
|
network \
|
|
svg
|
|
|
|
QT += widgets \
|
|
webenginewidgets\
|
|
webchannel\
|
|
printsupport \
|
|
help
|
|
|
|
DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x050F00
|
|
|
|
# QMediaPlayer is not available in Qt4.
|
|
!CONFIG( no_qtmultimedia_player ) {
|
|
QT += multimedia
|
|
DEFINES += MAKE_QTMULTIMEDIA_PLAYER
|
|
}
|
|
|
|
|
|
!CONFIG( no_ffmpeg_player ) {
|
|
DEFINES += MAKE_FFMPEG_PLAYER
|
|
}
|
|
|
|
QT += sql
|
|
CONFIG += exceptions \
|
|
rtti \
|
|
stl
|
|
# lrelease #lrelease generate qm under target folder.
|
|
|
|
QM_FILES_INSTALL_PATH = /locale/
|
|
OBJECTS_DIR = build
|
|
UI_DIR = build
|
|
MOC_DIR = build
|
|
RCC_DIR = build
|
|
LIBS += \
|
|
-lz \
|
|
-lbz2 \
|
|
-llzo2
|
|
|
|
win32 {
|
|
TARGET = GoldenDict
|
|
|
|
win32-msvc* {
|
|
#VERSION = 22.2 # More complicated things cause errors during compilation under MSVC++
|
|
DEFINES += __WIN32 _CRT_SECURE_NO_WARNINGS
|
|
contains(QMAKE_TARGET.arch, x86_64) {
|
|
DEFINES += NOMINMAX __WIN64
|
|
}
|
|
LIBS += -L$${PWD}/winlibs/lib/msvc
|
|
QMAKE_CXXFLAGS += /wd4290 # silence the warning C4290: C++ exception specification ignored
|
|
QMAKE_LFLAGS_RELEASE += /OPT:REF /OPT:ICF
|
|
DEFINES += GD_NO_MANIFEST
|
|
# QMAKE_CXXFLAGS_RELEASE += /GL # slows down the linking significantly
|
|
LIBS += -lshell32 -luser32 -lsapi -lole32
|
|
Debug: LIBS+= -lhunspelld
|
|
Release: LIBS+= -lhunspell
|
|
HUNSPELL_LIB = hunspell
|
|
}
|
|
|
|
LIBS += -liconv \
|
|
-lwsock32 \
|
|
-lpsapi \
|
|
-lole32 \
|
|
-loleaut32 \
|
|
-ladvapi32 \
|
|
-lcomdlg32
|
|
LIBS += -lvorbisfile \
|
|
-lvorbis \
|
|
-logg
|
|
!CONFIG( no_ffmpeg_player ) {
|
|
LIBS += -lao \
|
|
-lswresample \
|
|
-lavutil \
|
|
-lavformat \
|
|
-lavcodec
|
|
}
|
|
|
|
|
|
#RC_FILE = goldendict.rc
|
|
INCLUDEPATH += winlibs/include
|
|
|
|
# Enable console in Debug mode on Windows, with useful logging messages
|
|
Debug:CONFIG += console
|
|
|
|
Release:DEFINES += NO_CONSOLE
|
|
|
|
gcc48:QMAKE_CXXFLAGS += -Wno-unused-local-typedefs
|
|
|
|
CONFIG += zim_support
|
|
|
|
!CONFIG( no_chinese_conversion_support ) {
|
|
CONFIG += chinese_conversion_support
|
|
}
|
|
|
|
LIBS += -luxtheme
|
|
}
|
|
|
|
unix:!mac {
|
|
DEFINES += HAVE_X11
|
|
# This is to keep symbols for backtraces
|
|
QMAKE_CXXFLAGS += -rdynamic
|
|
QMAKE_LFLAGS += -rdynamic
|
|
|
|
QT += x11extras
|
|
|
|
CONFIG += link_pkgconfig
|
|
PKGCONFIG += vorbisfile \
|
|
vorbis \
|
|
ogg \
|
|
hunspell
|
|
!CONFIG( no_ffmpeg_player ) {
|
|
PKGCONFIG += ao \
|
|
libavutil \
|
|
libavformat \
|
|
libavcodec \
|
|
libswresample \
|
|
}
|
|
arm {
|
|
LIBS += -liconv
|
|
} else {
|
|
LIBS += -lX11 -lXtst
|
|
}
|
|
|
|
# Install prefix: first try to use qmake's PREFIX variable,
|
|
# then $PREFIX from system environment, and if both fails,
|
|
# use the hardcoded /usr/local.
|
|
PREFIX = $${PREFIX}
|
|
isEmpty( PREFIX ):PREFIX = $$(PREFIX)
|
|
isEmpty( PREFIX ):PREFIX = /usr/local
|
|
message(Install Prefix is: $$PREFIX)
|
|
|
|
DEFINES += PROGRAM_DATA_DIR=\\\"$$PREFIX/share/goldendict/\\\"
|
|
target.path = $$PREFIX/bin/
|
|
locale.path = $$PREFIX/share/goldendict/locale/
|
|
locale.files = locale/*.qm
|
|
INSTALLS += target \
|
|
locale
|
|
icons.path = $$PREFIX/share/pixmaps
|
|
icons.files = redist/icons/*.*
|
|
INSTALLS += icons
|
|
desktops.path = $$PREFIX/share/applications
|
|
desktops.files = redist/*.desktop
|
|
INSTALLS += desktops
|
|
metainfo.path = $$PREFIX/share/metainfo
|
|
metainfo.files = redist/*.metainfo.xml
|
|
INSTALLS += metainfo
|
|
helps.path = $$PREFIX/share/goldendict/help/
|
|
helps.files = help/*.qch
|
|
INSTALLS += helps
|
|
}
|
|
freebsd {
|
|
LIBS += -liconv -lexecinfo
|
|
}
|
|
mac {
|
|
TARGET = GoldenDict
|
|
# Uncomment this line to make a universal binary.
|
|
# You will need to use Xcode 3 and Qt Carbon SDK
|
|
# if you want the support for PowerPC and/or Mac OS X 10.4
|
|
# CONFIG += x86 x86_64 ppc
|
|
LIBS = -lz \
|
|
-lbz2 \
|
|
-liconv \
|
|
-lvorbisfile \
|
|
-lvorbis \
|
|
-logg \
|
|
-lhunspell-1.6.1 \
|
|
-llzo2
|
|
!CONFIG( no_ffmpeg_player ) {
|
|
LIBS += -lao \
|
|
-lswresample-gd \
|
|
-lavutil-gd \
|
|
-lavformat-gd \
|
|
-lavcodec-gd
|
|
}
|
|
INCLUDEPATH = $${PWD}/maclibs/include
|
|
LIBS += -L$${PWD}/maclibs/lib -framework AppKit -framework Carbon
|
|
OBJECTIVE_SOURCES += lionsupport.mm \
|
|
machotkeywrapper.mm \
|
|
macmouseover.mm \
|
|
speechclient_mac.mm
|
|
ICON = icons/macicon.icns
|
|
QMAKE_INFO_PLIST = myInfo.plist
|
|
QMAKE_POST_LINK = mkdir -p GoldenDict.app/Contents/Frameworks & \
|
|
cp -nR $${PWD}/maclibs/lib/ GoldenDict.app/Contents/Frameworks/ & \
|
|
mkdir -p GoldenDict.app/Contents/MacOS/locale & \
|
|
cp -R locale/*.qm GoldenDict.app/Contents/MacOS/locale/ & \
|
|
mkdir -p GoldenDict.app/Contents/MacOS/help & \
|
|
cp -R $${PWD}/help/*.qch GoldenDict.app/Contents/MacOS/help/
|
|
|
|
CONFIG += zim_support
|
|
!CONFIG( no_chinese_conversion_support ) {
|
|
CONFIG += chinese_conversion_support
|
|
#CONFIG( x86 ) {
|
|
QMAKE_POST_LINK += & mkdir -p GoldenDict.app/Contents/MacOS/opencc & \
|
|
cp -R $${PWD}/opencc/*.* GoldenDict.app/Contents/MacOS/opencc/
|
|
#} else {
|
|
# QMAKE_POST_LINK += & mkdir -p GoldenDict.app/Contents/MacOS/opencc & \
|
|
# cp -R $${PWD}/opencc/x64/*.json GoldenDict.app/Contents/MacOS/opencc/ & \
|
|
# cp -R $${PWD}/opencc/x64/*.ocd GoldenDict.app/Contents/MacOS/opencc/
|
|
#}
|
|
}
|
|
}
|
|
DEFINES += PROGRAM_VERSION=\\\"$$VERSION\\\"
|
|
|
|
# Input
|
|
HEADERS += folding.hh \
|
|
globalbroadcaster.h \
|
|
inc_case_folding.hh \
|
|
inc_diacritic_folding.hh \
|
|
mainwindow.hh \
|
|
resourceschemehandler.h \
|
|
sptr.hh \
|
|
dictionary.hh \
|
|
ex.hh \
|
|
config.hh \
|
|
sources.hh \
|
|
utf8.hh \
|
|
file.hh \
|
|
bgl_babylon.hh \
|
|
bgl.hh \
|
|
initializing.hh \
|
|
article_netmgr.hh \
|
|
dictzip.h \
|
|
btreeidx.hh \
|
|
stardict.hh \
|
|
chunkedstorage.hh \
|
|
weburlrequestinterceptor.h \
|
|
xdxf2html.hh \
|
|
iconv.hh \
|
|
lsa.hh \
|
|
htmlescape.hh \
|
|
dsl.hh \
|
|
dsl_details.hh \
|
|
filetype.hh \
|
|
fsencoding.hh \
|
|
groups.hh \
|
|
groups_widgets.hh \
|
|
instances.hh \
|
|
article_maker.hh \
|
|
scanpopup.hh \
|
|
articleview.hh \
|
|
audioplayerinterface.hh \
|
|
audioplayerfactory.hh \
|
|
ffmpegaudioplayer.hh \
|
|
multimediaaudioplayer.hh \
|
|
externalaudioplayer.hh \
|
|
externalviewer.hh \
|
|
wordfinder.hh \
|
|
groupcombobox.hh \
|
|
keyboardstate.hh \
|
|
mouseover.hh \
|
|
preferences.hh \
|
|
mutex.hh \
|
|
mediawiki.hh \
|
|
sounddir.hh \
|
|
hunspell.hh \
|
|
dictdfiles.hh \
|
|
audiolink.hh \
|
|
wstring.hh \
|
|
wstring_qt.hh \
|
|
processwrapper.hh \
|
|
hotkeywrapper.hh \
|
|
searchpanewidget.hh \
|
|
hotkeyedit.hh \
|
|
langcoder.hh \
|
|
editdictionaries.hh \
|
|
loaddictionaries.hh \
|
|
transliteration.hh \
|
|
romaji.hh \
|
|
belarusiantranslit.hh \
|
|
russiantranslit.hh \
|
|
german.hh \
|
|
website.hh \
|
|
orderandprops.hh \
|
|
language.hh \
|
|
dictionarybar.hh \
|
|
broken_xrecord.hh \
|
|
history.hh \
|
|
atomic_rename.hh \
|
|
articlewebview.hh \
|
|
zipfile.hh \
|
|
indexedzip.hh \
|
|
termination.hh \
|
|
greektranslit.hh \
|
|
webmultimediadownload.hh \
|
|
forvo.hh \
|
|
country.hh \
|
|
about.hh \
|
|
programs.hh \
|
|
parsecmdline.hh \
|
|
dictspanewidget.hh \
|
|
maintabwidget.hh \
|
|
mainstatusbar.hh \
|
|
gdappstyle.hh \
|
|
ufile.hh \
|
|
xdxf.hh \
|
|
sdict.hh \
|
|
decompress.hh \
|
|
aard.hh \
|
|
mruqmenu.hh \
|
|
dictinfo.hh \
|
|
zipsounds.hh \
|
|
stylescombobox.hh \
|
|
extlineedit.hh \
|
|
translatebox.hh \
|
|
historypanewidget.hh \
|
|
wordlist.hh \
|
|
mdictparser.hh \
|
|
mdx.hh \
|
|
voiceengines.hh \
|
|
ffmpegaudio.hh \
|
|
delegate.hh \
|
|
zim.hh \
|
|
gddebug.hh \
|
|
utils.hh \
|
|
gestures.hh \
|
|
tiff.hh \
|
|
dictheadwords.hh \
|
|
fulltextsearch.hh \
|
|
ftshelpers.hh \
|
|
dictserver.hh \
|
|
helpwindow.hh \
|
|
slob.hh \
|
|
ripemd.hh \
|
|
gls.hh \
|
|
splitfile.hh \
|
|
favoritespanewidget.hh \
|
|
cpp_features.hh \
|
|
treeview.hh
|
|
|
|
FORMS += groups.ui \
|
|
dictgroupwidget.ui \
|
|
mainwindow.ui \
|
|
sources.ui \
|
|
initializing.ui \
|
|
scanpopup.ui \
|
|
articleview.ui \
|
|
preferences.ui \
|
|
about.ui \
|
|
editdictionaries.ui \
|
|
orderandprops.ui \
|
|
dictinfo.ui \
|
|
dictheadwords.ui \
|
|
authentication.ui \
|
|
fulltextsearch.ui
|
|
|
|
SOURCES += folding.cc \
|
|
globalbroadcaster.cpp \
|
|
main.cc \
|
|
dictionary.cc \
|
|
config.cc \
|
|
resourceschemehandler.cpp \
|
|
sources.cc \
|
|
mainwindow.cc \
|
|
utf8.cc \
|
|
file.cc \
|
|
bgl_babylon.cc \
|
|
bgl.cc \
|
|
initializing.cc \
|
|
article_netmgr.cc \
|
|
dictzip.c \
|
|
btreeidx.cc \
|
|
stardict.cc \
|
|
chunkedstorage.cc \
|
|
weburlrequestinterceptor.cpp \
|
|
xdxf2html.cc \
|
|
iconv.cc \
|
|
lsa.cc \
|
|
htmlescape.cc \
|
|
dsl.cc \
|
|
dsl_details.cc \
|
|
filetype.cc \
|
|
fsencoding.cc \
|
|
groups.cc \
|
|
groups_widgets.cc \
|
|
instances.cc \
|
|
article_maker.cc \
|
|
scanpopup.cc \
|
|
articleview.cc \
|
|
audioplayerfactory.cc \
|
|
multimediaaudioplayer.cc \
|
|
externalaudioplayer.cc \
|
|
externalviewer.cc \
|
|
wordfinder.cc \
|
|
groupcombobox.cc \
|
|
keyboardstate.cc \
|
|
mouseover.cc \
|
|
preferences.cc \
|
|
mutex.cc \
|
|
mediawiki.cc \
|
|
sounddir.cc \
|
|
hunspell.cc \
|
|
dictdfiles.cc \
|
|
audiolink.cc \
|
|
wstring.cc \
|
|
wstring_qt.cc \
|
|
processwrapper.cc \
|
|
hotkeywrapper.cc \
|
|
hotkeyedit.cc \
|
|
langcoder.cc \
|
|
editdictionaries.cc \
|
|
loaddictionaries.cc \
|
|
transliteration.cc \
|
|
romaji.cc \
|
|
belarusiantranslit.cc \
|
|
russiantranslit.cc \
|
|
german.cc \
|
|
website.cc \
|
|
orderandprops.cc \
|
|
language.cc \
|
|
dictionarybar.cc \
|
|
broken_xrecord.cc \
|
|
history.cc \
|
|
atomic_rename.cc \
|
|
articlewebview.cc \
|
|
zipfile.cc \
|
|
indexedzip.cc \
|
|
termination.cc \
|
|
greektranslit.cc \
|
|
webmultimediadownload.cc \
|
|
forvo.cc \
|
|
country.cc \
|
|
about.cc \
|
|
programs.cc \
|
|
parsecmdline.cc \
|
|
maintabwidget.cc \
|
|
mainstatusbar.cc \
|
|
gdappstyle.cc \
|
|
ufile.cc \
|
|
xdxf.cc \
|
|
sdict.cc \
|
|
decompress.cc \
|
|
aard.cc \
|
|
mruqmenu.cc \
|
|
dictinfo.cc \
|
|
zipsounds.cc \
|
|
stylescombobox.cc \
|
|
extlineedit.cc \
|
|
translatebox.cc \
|
|
historypanewidget.cc \
|
|
wordlist.cc \
|
|
mdictparser.cc \
|
|
mdx.cc \
|
|
voiceengines.cc \
|
|
ffmpegaudio.cc \
|
|
delegate.cc \
|
|
zim.cc \
|
|
gddebug.cc \
|
|
gestures.cc \
|
|
tiff.cc \
|
|
dictheadwords.cc \
|
|
fulltextsearch.cc \
|
|
ftshelpers.cc \
|
|
dictserver.cc \
|
|
helpwindow.cc \
|
|
slob.cc \
|
|
ripemd.cc \
|
|
gls.cc \
|
|
splitfile.cc \
|
|
favoritespanewidget.cc \
|
|
treeview.cc
|
|
|
|
win32 {
|
|
FORMS += texttospeechsource.ui
|
|
SOURCES += wordbyauto.cc \
|
|
guids.c \
|
|
x64.cc \
|
|
speechclient_win.cc \
|
|
texttospeechsource.cc \
|
|
speechhlp.cc
|
|
HEADERS += wordbyauto.hh \
|
|
uiauto.hh \
|
|
x64.hh \
|
|
texttospeechsource.hh \
|
|
sapi.hh \
|
|
sphelper.hh \
|
|
speechclient.hh \
|
|
speechhlp.hh \
|
|
hotkeys.h
|
|
}
|
|
|
|
mac {
|
|
HEADERS += macmouseover.hh \
|
|
texttospeechsource.hh \
|
|
speechclient.hh
|
|
FORMS += texttospeechsource.ui
|
|
SOURCES += texttospeechsource.cc
|
|
}
|
|
|
|
unix:!mac {
|
|
HEADERS += scanflag.hh
|
|
FORMS += scanflag.ui
|
|
SOURCES += scanflag.cc
|
|
}
|
|
|
|
|
|
HEADERS += wildcard.hh
|
|
SOURCES += wildcard.cc
|
|
|
|
|
|
CONFIG( zim_support ) {
|
|
DEFINES += MAKE_ZIM_SUPPORT
|
|
LIBS += -llzma -lzstd
|
|
}
|
|
|
|
!CONFIG( no_extra_tiff_handler ) {
|
|
DEFINES += MAKE_EXTRA_TIFF_HANDLER
|
|
LIBS += -ltiff
|
|
}
|
|
|
|
CONFIG( no_epwing_support ) {
|
|
DEFINES += NO_EPWING_SUPPORT
|
|
}
|
|
|
|
!CONFIG( no_epwing_support ) {
|
|
HEADERS += epwing.hh \
|
|
epwing_book.hh \
|
|
epwing_charmap.hh
|
|
SOURCES += epwing.cc \
|
|
epwing_book.cc \
|
|
epwing_charmap.cc
|
|
LIBS += -leb
|
|
}
|
|
|
|
CONFIG( chinese_conversion_support ) {
|
|
DEFINES += MAKE_CHINESE_CONVERSION_SUPPORT
|
|
FORMS += chineseconversion.ui
|
|
HEADERS += chinese.hh \
|
|
chineseconversion.hh
|
|
SOURCES += chinese.cc \
|
|
chineseconversion.cc
|
|
win32-msvc* {
|
|
LIBS += -lopencc
|
|
} else {
|
|
mac {
|
|
LIBS += -lopencc.1.1
|
|
} else {
|
|
LIBS += -lopencc
|
|
}
|
|
}
|
|
}
|
|
|
|
RESOURCES += resources.qrc \
|
|
flags.qrc
|
|
TRANSLATIONS += locale/ru_RU.ts \
|
|
locale/zh_CN.ts \
|
|
locale/cs_CZ.ts \
|
|
locale/de_DE.ts \
|
|
locale/el_GR.ts \
|
|
locale/bg_BG.ts \
|
|
locale/ar_SA.ts \
|
|
locale/lt_LT.ts \
|
|
locale/uk_UA.ts \
|
|
locale/vi_VN.ts \
|
|
locale/it_IT.ts \
|
|
locale/pl_PL.ts \
|
|
locale/ja_JP.ts \
|
|
locale/zh_TW.ts \
|
|
locale/sq_AL.ts \
|
|
locale/pt_BR.ts \
|
|
locale/es_AR.ts \
|
|
locale/es_BO.ts \
|
|
locale/es_ES.ts \
|
|
locale/sk_SK.ts \
|
|
locale/tr_TR.ts \
|
|
locale/qu_WI.ts \
|
|
locale/tg_TJ.ts \
|
|
locale/ay_WI.ts \
|
|
locale/be_BY.ts \
|
|
locale/be_BY@latin.ts \
|
|
locale/fr_FR.ts \
|
|
locale/ko_KR.ts \
|
|
locale/nl_NL.ts \
|
|
locale/sr_SR.ts \
|
|
locale/sv_SE.ts \
|
|
locale/tk_TM.ts \
|
|
locale/fa_IR.ts \
|
|
locale/mk_MK.ts \
|
|
locale/eo_EO.ts \
|
|
locale/fi_FI.ts \
|
|
locale/jb_JB.ts \
|
|
locale/hi_IN.ts \
|
|
locale/ie_001.ts
|
|
|
|
# Build version file
|
|
!isEmpty( hasGit ) {
|
|
QMAKE_EXTRA_TARGETS += revtarget
|
|
PRE_TARGETDEPS += $$PWD/version.txt
|
|
revtarget.target = $$PWD/version.txt
|
|
|
|
# !win32 {
|
|
# revtarget.commands = cd $$PWD; git describe --tags --always --dirty > $$revtarget.target
|
|
# } else {
|
|
# revtarget.commands = git --git-dir=\"$$PWD/.git\" describe --tags --always --dirty > $$revtarget.target
|
|
# }
|
|
|
|
ALL_SOURCES = $$SOURCES $$HEADERS $$FORMS
|
|
for(src, ALL_SOURCES) {
|
|
QUALIFIED_SOURCES += $${PWD}/$${src}
|
|
}
|
|
revtarget.depends = $$QUALIFIED_SOURCES
|
|
}
|
|
|
|
# This makes qmake generate translations
|
|
|
|
|
|
isEmpty(QMAKE_LRELEASE):QMAKE_LRELEASE = $$[QT_INSTALL_BINS]/lrelease
|
|
|
|
|
|
# The *.qm files might not exist when qmake is run for the first time,
|
|
# causing the standard install rule to be ignored, and no translations
|
|
# will be installed. With this, we create the qm files during qmake run.
|
|
!win32 {
|
|
system($${QMAKE_LRELEASE} -silent $${_PRO_FILE_} 2> /dev/null)
|
|
}
|
|
else{
|
|
system($${QMAKE_LRELEASE} -silent $${_PRO_FILE_})
|
|
}
|
|
|
|
updateqm.input = TRANSLATIONS
|
|
updateqm.output = locale/${QMAKE_FILE_BASE}.qm
|
|
updateqm.commands = $$QMAKE_LRELEASE \
|
|
${QMAKE_FILE_IN} \
|
|
-qm \
|
|
${QMAKE_FILE_OUT}
|
|
updateqm.CONFIG += no_link
|
|
QMAKE_EXTRA_COMPILERS += updateqm
|
|
TS_OUT = $$TRANSLATIONS
|
|
TS_OUT ~= s/.ts/.qm/g
|
|
PRE_TARGETDEPS += $$TS_OUT
|
|
|
|
include( qtsingleapplication/src/qtsingleapplication.pri )
|
|
|