qt module: add include_directories to moc compile

Fixes #12182
pull/11008/merge
Charles Brunet 1 year ago committed by Nirbheek Chauhan
parent 599f37eb56
commit 84466b7359
  1. 7
      mesonbuild/modules/qt.py
  2. 1
      test cases/frameworks/4 qt/manualinclude.cpp
  3. 13
      test cases/frameworks/4 qt/meson.build
  4. 3
      test cases/frameworks/4 qt/mocdep/meson.build
  5. 1
      test cases/frameworks/4 qt/mocdep/mocdep.h

@ -23,7 +23,7 @@ from . import ModuleReturnValue, ExtensionModule
from .. import build
from .. import coredata
from .. import mlog
from ..dependencies import find_external_dependency, Dependency, ExternalLibrary
from ..dependencies import find_external_dependency, Dependency, ExternalLibrary, InternalDependency
from ..mesonlib import MesonException, File, version_compare, Popen_safe
from ..interpreter import extract_required_kwarg
from ..interpreter.type_checking import INSTALL_DIR_KW, INSTALL_KW, NoneType
@ -457,7 +457,10 @@ class QtBaseModule(ExtensionModule):
inc = state.get_include_args(include_dirs=kwargs['include_directories'])
compile_args: T.List[str] = []
for dep in kwargs['dependencies']:
compile_args.extend([a for a in dep.get_all_compile_args() if a.startswith(('-I', '-D'))])
compile_args.extend(a for a in dep.get_all_compile_args() if a.startswith(('-I', '-D')))
if isinstance(dep, InternalDependency):
for incl in dep.include_directories:
compile_args.extend(f'-I{i}' for i in incl.to_string_list(self.interpreter.source_root, self.interpreter.environment.build_dir))
output: T.List[build.GeneratedList] = []

@ -1,4 +1,5 @@
#include"manualinclude.h"
#include <mocdep.h>
#include<QCoreApplication>
#include<QObject>

@ -2,6 +2,9 @@ project('qt4, qt5, and qt6 build test', 'cpp',
# Qt6 requires C++ 17 support
default_options : ['cpp_std=c++17'])
# Visit the subdir before entering the loop
subdir('mocdep')
qt5_modules = ['Widgets']
qt6_modules = ['Widgets']
foreach qt : ['qt4', 'qt5', 'qt6']
@ -114,17 +117,21 @@ foreach qt : ['qt4', 'qt5', 'qt6']
moc_extra_arguments : ['-DMOC_EXTRA_FLAG'], # This is just a random macro to test `extra_arguments`
moc_sources : 'manualinclude.cpp',
moc_headers : 'manualinclude.h',
method : get_option('method'))
method : get_option('method'),
dependencies: mocdep,
)
manpreprocessed = qtmodule.compile_moc(
extra_args : ['-DMOC_EXTRA_FLAG'], # This is just a random macro to test `extra_arguments`
sources : 'manualinclude.cpp',
headers : 'manualinclude.h',
method : get_option('method'))
method : get_option('method'),
dependencies: mocdep,
)
qtmaninclude = executable(qt + 'maninclude',
sources : ['manualinclude.cpp', manpreprocessed],
dependencies : qtcore)
dependencies : [qtcore, mocdep])
test(qt + 'maninclude', qtmaninclude)

@ -0,0 +1,3 @@
mocdep = declare_dependency(
include_directories: include_directories('.'),
)
Loading…
Cancel
Save