diff --git a/meson.build b/meson.build
index 7a9c5ec851..a8b92f30fa 100644
--- a/meson.build
+++ b/meson.build
@@ -2,23 +2,39 @@ project('nlohmann_json',
     'cpp',
     version : '3.11.3',
     license : 'MIT',
+    meson_version : '>= 0.64',
+    default_options: ['cpp_std=c++11'],
 )
 
-nlohmann_json_dep = declare_dependency(
-    include_directories: include_directories('single_include')
-)
+if get_option('MultipleHeaders')
+    incdir = 'include'
+else
+    incdir = 'single_include'
+endif
 
-nlohmann_json_multiple_headers = declare_dependency(
-    include_directories: include_directories('include')
+cpp_args = [
+    '-DJSON_USE_GLOBAL_UDLS=@0@'.format(
+        (not get_option('GlobalUDLs')).to_int()),
+    '-DJSON_USE_IMPLICIT_CONVERSIONS=@0@'.format(
+        (not get_option('ImplicitConversions')).to_int()),
+]
+
+nlohmann_json_dep = declare_dependency(
+    compile_args: cpp_args,
+    include_directories: include_directories(incdir)
 )
+meson.override_dependency('nlohmann_json', nlohmann_json_dep)
 
 if not meson.is_subproject()
-install_headers('single_include/nlohmann/json.hpp', subdir: 'nlohmann')
-install_headers('single_include/nlohmann/json_fwd.hpp', subdir: 'nlohmann')
+    install_subdir(
+        incdir / 'nlohmann',
+        install_dir: get_option('includedir'),
+        install_tag: 'devel',
+    )
 
-pkgc = import('pkgconfig')
-pkgc.generate(name: 'nlohmann_json',
-    version: meson.project_version(),
-    description: 'JSON for Modern C++'
-)
+    pkgc = import('pkgconfig')
+    pkgc.generate(name: 'nlohmann_json',
+        version: meson.project_version(),
+        description: 'JSON for Modern C++'
+    )
 endif
diff --git a/meson_options.txt b/meson_options.txt
new file mode 100644
index 0000000000..770fc722fd
--- /dev/null
+++ b/meson_options.txt
@@ -0,0 +1,18 @@
+option(
+    'MultipleHeaders',
+    type: 'boolean',
+    value: true,
+    description: 'Use non-amalgomated version of the library',
+)
+option(
+    'GlobalUDLs',
+    type: 'boolean',
+    value: true,
+    description: 'Place user-defined string literals in the global namespace',
+)
+option(
+    'ImplicitConversions',
+    type: 'boolean',
+    value: true,
+    description: 'Enable implicit conversions',
+)