if catch2_dep.version().version_compare('< 3') testmain = static_library( 'catch_main', 'main.cpp', 'catch.hpp', dependencies: catch2_dep, ) testdep = declare_dependency( link_with: testmain, dependencies: [catch2_dep, cli11_dep] ) else testdep = declare_dependency( dependencies: [cli11_dep, dependency('catch2-with-main')], compile_args: '-DCLI11_CATCH3' ) endif link_test_lib = static_library( 'link_test_1', 'link_test_1.cpp', dependencies: cli11_dep, build_by_default: false, ) if cxx.get_argument_syntax() == 'msvc' nodeprecated = ['/wd4996'] else nodeprecated = ['-Wno-deprecated-declarations'] endif boost_dep = dependency('boost', required: false, disabler: true) if boost_dep.found() boost_dep = declare_dependency( dependencies: boost_dep, compile_args: '-DCLI11_BOOST_OPTIONAL', ) maybe_boost_dep = boost_dep else maybe_boost_dep = declare_dependency() endif testnames = { 'HelpersTest': {'workdir': meson.project_build_root()}, 'ConfigFileTest': {}, 'OptionTypeTest': {}, 'NumericTypeTest': {}, 'SimpleTest': {}, 'AppTest': {}, 'SetTest': {}, 'TransformTest': {}, 'CreationTest': {}, 'SubcommandTest': {}, 'HelpTest': {}, 'FormatterTest': {}, 'NewParseTest': {}, 'OptionalTest': {'dependencies': maybe_boost_dep}, 'BoostOptionTypeTest': {'dependencies': boost_dep}, 'DeprecatedTest': {'cpp_args': nodeprecated}, 'StringParseTest': {}, 'ComplexTypeTest': {}, 'TrueFalseTest': {}, 'localeTest': {}, 'OptionGroupTest': {}, 'ExtraValidatorsTest': {}, 'EncodingTest': {}, 'WindowsTest': {'dependencies': host_machine.system() == 'windows' ? declare_dependency() : disabler()}, # multi-only 'TimerTest': {}, # link_test 'link_test_2': {'link_with': link_test_lib}, } fs = import('fs') app_cfgdata = configuration_data() app_cflags = [] app_tgts = [] foreach app: ['ensure_utf8', 'ensure_utf8_twice'] app_tgt = executable( app, 'applications'/app + '.cpp', dependencies: cli11_dep, build_by_default: false, ) app_cfgdata.set_quoted(app, fs.relative_to(app_tgt.full_path(), meson.current_build_dir())) app_cflags += '-DCLI11_@0@_EXE=@1@'.format(app.to_upper(), app_cfgdata.get(app)) app_tgts += app_tgt endforeach foreach name, kwargs: testnames test(name, executable(name, name + '.cpp', cpp_args: app_cflags + kwargs.get('cpp_args', []), build_by_default: false, dependencies: [testdep] + kwargs.get('dependencies', []), link_with: kwargs.get('link_with', []) ), depends: app_tgts, workdir: kwargs.get('workdir', meson.current_build_dir())) endforeach