The Meson Build System
http://mesonbuild.com/
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
66 lines
2.3 KiB
66 lines
2.3 KiB
project('qt4 and 5 build test', 'cpp', |
|
# Qt5 now requires C++ 11 support |
|
default_options : ['cpp_std=c++11']) |
|
|
|
qt5_modules = ['Widgets'] |
|
foreach qt : ['qt4', 'qt5'] |
|
qt_modules = ['Core', 'Gui'] |
|
if qt == 'qt5' |
|
qt_modules += qt5_modules |
|
endif |
|
# Test that invalid modules are indeed not found |
|
fakeqtdep = dependency(qt, modules : ['DefinitelyNotFound'], required : false) |
|
if fakeqtdep.found() |
|
error('Invalid qt dep incorrectly found!') |
|
endif |
|
# Test that partially-invalid modules are indeed not found |
|
fakeqtdep = dependency(qt, modules : ['Core', 'DefinitelyNotFound'], required : false) |
|
if fakeqtdep.found() |
|
error('Invalid qt dep incorrectly found!') |
|
endif |
|
# If qt4 modules are found, test that. qt5 is required. |
|
qtdep = dependency(qt, modules : qt_modules, required : qt == 'qt5') |
|
if qtdep.found() |
|
qtmodule = import(qt) |
|
|
|
# The following has two resource files because having two in one target |
|
# requires you to do it properly or you get linker symbol clashes. |
|
|
|
prep = qtmodule.preprocess( |
|
moc_headers : ['mainWindow.h'], # These need to be fed through the moc tool before use. |
|
ui_files : 'mainWindow.ui', # XML files that need to be compiled with the uic tol. |
|
qresources : ['stuff.qrc', 'stuff2.qrc'], # Resource file for rcc compiler. |
|
) |
|
|
|
# Test that setting a unique name with a positional argument works |
|
qtmodule.preprocess(qt + 'teststuff', qresources : ['stuff.qrc']) |
|
|
|
qexe = executable(qt + 'app', |
|
sources : ['main.cpp', 'mainWindow.cpp', # Sources that don't need preprocessing. |
|
prep], |
|
dependencies : qtdep) |
|
|
|
# We need a console test application because some test environments |
|
# do not have an X server. |
|
|
|
qtcore = dependency(qt, modules : 'Core') |
|
|
|
qtcoreapp = executable(qt + 'core', 'q5core.cpp', |
|
dependencies : qtcore) |
|
|
|
test(qt + 'test', qtcoreapp) |
|
|
|
# The build system needs to include the cpp files from |
|
# headers but the user must manually include moc |
|
# files from sources. |
|
manpreprocessed = qtmodule.preprocess( |
|
moc_sources : 'manualinclude.cpp', |
|
moc_headers : 'manualinclude.h') |
|
|
|
qtmaninclude = executable(qt + 'maninclude', |
|
sources : ['manualinclude.cpp', manpreprocessed], |
|
dependencies : qtcore) |
|
|
|
test(qt + 'maninclude', qtmaninclude) |
|
endif |
|
endforeach
|
|
|