rice 4.7.1 → 4.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (153) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +29 -1
  3. data/CMakeLists.txt +14 -22
  4. data/CMakePresets.json +203 -75
  5. data/FindRuby.cmake +358 -123
  6. data/bin/rice-doc.rb +56 -141
  7. data/include/rice/api.hpp +248 -0
  8. data/include/rice/rice.hpp +2237 -1657
  9. data/include/rice/stl.hpp +346 -443
  10. data/lib/rice/doc/config.rb +70 -0
  11. data/lib/rice/doc/cpp_reference.rb +1 -4
  12. data/lib/rice/doc/mkdocs.rb +58 -20
  13. data/lib/rice/doc/rice.rb +20 -0
  14. data/lib/rice/doc.rb +1 -0
  15. data/lib/rice/make_rice_headers.rb +7 -0
  16. data/lib/rice/native_registry.rb +2 -2
  17. data/lib/rice/rbs.rb +2 -2
  18. data/lib/rice/version.rb +1 -1
  19. data/lib/rubygems_plugin.rb +12 -9
  20. data/rice/Arg.hpp +12 -6
  21. data/rice/Arg.ipp +14 -7
  22. data/rice/Buffer.ipp +44 -40
  23. data/rice/Callback.hpp +1 -1
  24. data/rice/Callback.ipp +2 -7
  25. data/rice/Constructor.hpp +1 -1
  26. data/rice/Constructor.ipp +11 -11
  27. data/rice/Data_Object.ipp +15 -15
  28. data/rice/Data_Type.hpp +9 -10
  29. data/rice/Data_Type.ipp +22 -25
  30. data/rice/Director.hpp +1 -0
  31. data/rice/Enum.ipp +58 -39
  32. data/rice/Exception.hpp +4 -4
  33. data/rice/Exception.ipp +7 -7
  34. data/rice/NoGVL.hpp +13 -0
  35. data/rice/Reference.hpp +56 -0
  36. data/rice/Reference.ipp +96 -0
  37. data/rice/Return.hpp +4 -1
  38. data/rice/Return.ipp +0 -6
  39. data/rice/cpp_api/Array.hpp +41 -4
  40. data/rice/cpp_api/Array.ipp +105 -9
  41. data/rice/cpp_api/Class.hpp +2 -2
  42. data/rice/cpp_api/Class.ipp +4 -4
  43. data/rice/cpp_api/Hash.ipp +7 -4
  44. data/rice/cpp_api/Module.hpp +4 -4
  45. data/rice/cpp_api/Module.ipp +12 -10
  46. data/rice/cpp_api/Object.hpp +4 -4
  47. data/rice/cpp_api/Object.ipp +15 -12
  48. data/rice/cpp_api/String.hpp +2 -2
  49. data/rice/cpp_api/String.ipp +11 -8
  50. data/rice/cpp_api/Symbol.ipp +7 -7
  51. data/rice/cpp_api/shared_methods.hpp +5 -9
  52. data/rice/detail/InstanceRegistry.hpp +0 -2
  53. data/rice/detail/Native.hpp +31 -21
  54. data/rice/detail/Native.ipp +282 -130
  55. data/rice/detail/NativeAttributeGet.hpp +5 -7
  56. data/rice/detail/NativeAttributeGet.ipp +26 -26
  57. data/rice/detail/NativeAttributeSet.hpp +2 -4
  58. data/rice/detail/NativeAttributeSet.ipp +20 -16
  59. data/rice/detail/NativeCallback.hpp +77 -0
  60. data/rice/detail/NativeCallback.ipp +280 -0
  61. data/rice/detail/NativeFunction.hpp +11 -21
  62. data/rice/detail/NativeFunction.ipp +58 -119
  63. data/rice/detail/NativeInvoker.hpp +4 -4
  64. data/rice/detail/NativeInvoker.ipp +7 -7
  65. data/rice/detail/NativeIterator.hpp +2 -4
  66. data/rice/detail/NativeIterator.ipp +18 -14
  67. data/rice/detail/NativeMethod.hpp +10 -20
  68. data/rice/detail/NativeMethod.ipp +54 -114
  69. data/rice/detail/NativeProc.hpp +5 -7
  70. data/rice/detail/NativeProc.ipp +39 -28
  71. data/rice/detail/NativeRegistry.hpp +0 -1
  72. data/rice/detail/Parameter.hpp +15 -8
  73. data/rice/detail/Parameter.ipp +102 -43
  74. data/rice/detail/Proc.ipp +14 -28
  75. data/rice/detail/RubyType.ipp +2 -53
  76. data/rice/detail/Type.hpp +23 -7
  77. data/rice/detail/Type.ipp +73 -93
  78. data/rice/detail/TypeRegistry.ipp +5 -4
  79. data/rice/detail/Wrapper.hpp +1 -1
  80. data/rice/detail/Wrapper.ipp +18 -10
  81. data/rice/detail/from_ruby.hpp +8 -6
  82. data/rice/detail/from_ruby.ipp +306 -173
  83. data/rice/detail/ruby.hpp +23 -0
  84. data/rice/libc/file.hpp +4 -4
  85. data/rice/rice.hpp +6 -8
  86. data/rice/rice_api/Native.ipp +5 -1
  87. data/rice/rice_api/Parameter.ipp +1 -1
  88. data/rice/ruby_mark.hpp +2 -1
  89. data/rice/stl/complex.ipp +12 -8
  90. data/rice/stl/map.ipp +27 -22
  91. data/rice/stl/monostate.ipp +16 -12
  92. data/rice/stl/multimap.hpp +0 -2
  93. data/rice/stl/multimap.ipp +27 -22
  94. data/rice/stl/optional.ipp +27 -11
  95. data/rice/stl/pair.ipp +5 -5
  96. data/rice/stl/reference_wrapper.ipp +5 -4
  97. data/rice/stl/set.ipp +16 -16
  98. data/rice/stl/shared_ptr.hpp +0 -16
  99. data/rice/stl/shared_ptr.ipp +34 -190
  100. data/rice/stl/string.ipp +18 -18
  101. data/rice/stl/string_view.ipp +1 -1
  102. data/rice/stl/tuple.ipp +15 -36
  103. data/rice/stl/unique_ptr.ipp +18 -8
  104. data/rice/stl/unordered_map.ipp +20 -15
  105. data/rice/stl/variant.ipp +37 -21
  106. data/rice/stl/vector.ipp +41 -36
  107. data/rice/traits/function_traits.hpp +19 -19
  108. data/rice/traits/method_traits.hpp +4 -4
  109. data/rice/traits/rice_traits.hpp +162 -39
  110. data/rice.gemspec +1 -3
  111. data/test/test_Array.cpp +261 -3
  112. data/test/test_Attribute.cpp +6 -3
  113. data/test/test_Buffer.cpp +6 -42
  114. data/test/test_Callback.cpp +77 -23
  115. data/test/test_Data_Object.cpp +1 -1
  116. data/test/test_Data_Type.cpp +21 -22
  117. data/test/test_Director.cpp +2 -4
  118. data/test/test_Enum.cpp +34 -5
  119. data/test/test_File.cpp +9 -5
  120. data/test/test_From_Ruby.cpp +4 -3
  121. data/test/test_GVL.cpp +3 -3
  122. data/test/test_Hash.cpp +1 -1
  123. data/test/test_Iterator.cpp +54 -22
  124. data/test/test_Keep_Alive.cpp +1 -1
  125. data/test/test_Keep_Alive_No_Wrapper.cpp +1 -1
  126. data/test/test_Module.cpp +5 -5
  127. data/test/test_Overloads.cpp +345 -48
  128. data/test/test_Proc.cpp +54 -0
  129. data/test/test_Reference.cpp +181 -0
  130. data/test/test_Self.cpp +2 -2
  131. data/test/test_Stl_Set.cpp +6 -6
  132. data/test/test_Stl_SharedPtr.cpp +54 -30
  133. data/test/test_Stl_String_View.cpp +4 -2
  134. data/test/test_Stl_Tuple.cpp +1 -1
  135. data/test/test_Stl_Variant.cpp +6 -14
  136. data/test/test_Stl_Vector.cpp +61 -30
  137. data/test/test_String.cpp +4 -2
  138. data/test/test_Struct.cpp +1 -1
  139. data/test/test_Symbol.cpp +1 -1
  140. data/test/test_To_Ruby.cpp +1 -0
  141. data/test/test_Type.cpp +36 -35
  142. data/test/test_global_functions.cpp +1 -1
  143. data/test/unittest.cpp +1 -1
  144. data/test/unittest.hpp +5 -5
  145. metadata +10 -10
  146. data/rice/Function.hpp +0 -17
  147. data/rice/Function.ipp +0 -13
  148. data/rice/detail/MethodInfo.hpp +0 -48
  149. data/rice/detail/MethodInfo.ipp +0 -99
  150. data/rice/detail/NativeCallbackFFI.hpp +0 -55
  151. data/rice/detail/NativeCallbackFFI.ipp +0 -152
  152. data/rice/detail/NativeCallbackSimple.hpp +0 -30
  153. data/rice/detail/NativeCallbackSimple.ipp +0 -29
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c8d106501ff928ca481358d579bffe110efebbd4a98f3de141b8a4e6a853b17a
4
- data.tar.gz: 900e679ee80f32d547487133911dfa1ccdd087a41414fb44a1c8b144fec15278
3
+ metadata.gz: 1cd8fd2c5aefe04f71129457cc7452fff163a593cd1395070760bd9914541414
4
+ data.tar.gz: 3ca53fb0b47080e009e54b69678f30dfa039f8d68b44ec52a4ff6a95992234d1
5
5
  SHA512:
6
- metadata.gz: 33837b467af9b734848a7ef09b552ed2ab25f7f86c6fdedbc8f6c85dc42137d2ca46e9fd812198b99baa4af94f1f659d15530f9ecf36a2e147d3ddfb5f3c02ff
7
- data.tar.gz: 11bccd16adcb9a117a5ce80c91b219b1102a1fde56086542528a4684cedc84631261c6afb583dbebb0c25c3a2b1908c2196197f36c79cfc7db7322ab104d0388
6
+ metadata.gz: 30452135eabeac3550aa1d7cdfbf834434ad9548c2aaa556d960a57eee7a99518537cd77341a40b4ec61992457756dc710e60cee0753b6fd37ffc67bad0de5c1
7
+ data.tar.gz: d0ebe6f3dde0820d27db562bde3960669581d6470552aa55d9ab8e20fb633600a1af0e154d14f27004ac8334d4fa3e658b0dcde5826b828572cd57ce4661a2fc
data/CHANGELOG.md CHANGED
@@ -1,3 +1,31 @@
1
+ # Changelog
2
+
3
+ ## 4.8.0 (2025-12-29)
4
+ This release focuses on making Rice easier to use:
5
+
6
+ * Compilation times are approximately 2x faster than version 4.7
7
+ * Compiled library sizes are about 30% smaller
8
+ * Improved keyword argument support
9
+ * Improved method override support
10
+ * Improved CMake support
11
+ * Improved rbs generation support
12
+ * Improved api documentation generation support
13
+ * Expanded and improved documentation
14
+ * Enum values can now be compared against their underlying type (e.g., `Season::Red == 0`)
15
+ * STL containers now support `==` and `eql?` for equality comparison
16
+ * Automatic creation of `std::shared_ptr<T>` Ruby classes
17
+ * Support for C++ references in callbacks
18
+ * Array class now supports random iterators
19
+ * Fixed Ruby detection for Homebrew installations on macOS
20
+ * Added support for references to fundamental types
21
+
22
+ However, these changes did require some breaking changes, which include:
23
+
24
+ * `Return().isBuffer()` is replaced by `ReturnBuffer()`
25
+ * `Arg("").isBuffer()` is replaced by `ArgBuffer("")`
26
+ * `Function().noGVL()` is replaced by `NoGvL()`
27
+ * `is_convertible` methods must now return a `double` instead of a `Convertible` enum
28
+
1
29
  ## 4.7.1 (2025-10-28)
2
30
  Updates:
3
31
  * Update overload resolution to take into account function arguments that are tagged as buffers via Arg("").setBuffer().
@@ -217,7 +245,7 @@ There are a ton of changes, but some of the most important ones:
217
245
  Ruby RArray type to the system. This is not something that we should support going forward
218
246
  as these internals are going to change.
219
247
 
220
- # 2.0.0 (2015-11-27)
248
+ ## 2.0.0 (2015-11-27)
221
249
 
222
250
  * Deprecated all versions of Ruby < 2.0
223
251
  * Removed Rice::VM.
data/CMakeLists.txt CHANGED
@@ -1,27 +1,19 @@
1
- cmake_minimum_required (VERSION 3.26)
1
+ cmake_minimum_required(VERSION 3.26)
2
2
 
3
- project(Rice)
3
+ project(rice LANGUAGES CXX)
4
4
 
5
- set(CMAKE_CXX_STANDARD 17)
6
- set(CMAKE_CXX_STANDARD_REQUIRED ON)
5
+ # Put actual target definitions in a separate file so the root stays tiny.
6
+ include(${CMAKE_CURRENT_SOURCE_DIR}/Rice.cmake)
7
7
 
8
- # For older versions of CMake can use include("./FindRuby.cmake")
9
- find_package("Ruby")
10
-
11
- if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
12
- set(CMAKE_MSVC_DEBUG_INFORMATION_FORMAT "$<IF:$<AND:$<C_COMPILER_ID:MSVC>,$<CXX_COMPILER_ID:MSVC>>,$<$<CONFIG:Debug,RelWithDebInfo>:EditAndContinue>,$<$<CONFIG:Debug,RelWithDebInfo>:ProgramDatabase>>")
13
- add_compile_definitions(-D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE)
14
- add_compile_options(/bigobj /utf-8)
15
- # The default of /EHsc crashes Ruby when calling longjmp with optimizations on (/O2)
16
- string(REGEX REPLACE "/EHsc" "/EHs" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
17
- elseif (CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
18
- add_compile_definitions(-D_CRT_SECURE_NO_WARNINGS)
19
- elseif (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
20
- add_compile_options(-ftemplate-backtrace-limit=0)
21
- # https://github.com/doxygen/doxygen/issues/9269#issuecomment-1094975328
22
- #add_compile_options(unittest PRIVATE -Wa,-mbig-obj)
23
- set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -Og")
8
+ # Default behavior:
9
+ # - If you're working on Rice directly (top-level), build tests by default (good for Visual Studio).
10
+ # - If Rice is consumed via FetchContent/add_subdirectory, do NOT build tests by default.
11
+ if (PROJECT_IS_TOP_LEVEL)
12
+ option(RICE_BUILD_TESTS "Build Rice tests" ON)
13
+ else ()
14
+ option(RICE_BUILD_TESTS "Build Rice tests" OFF)
24
15
  endif ()
25
16
 
26
- # Include sub-projects.
27
- add_subdirectory ("test")
17
+ if (RICE_BUILD_TESTS AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/test/CMakeLists.txt")
18
+ add_subdirectory(test)
19
+ endif ()
data/CMakePresets.json CHANGED
@@ -1,75 +1,203 @@
1
- {
2
- "version": 3,
3
- "configurePresets": [
4
- {
5
- "name": "windows-base",
6
- "hidden": true,
7
- "generator": "Ninja",
8
- "binaryDir": "${sourceDir}/out/build/${presetName}",
9
- "installDir": "${sourceDir}/out/install/${presetName}",
10
- "cacheVariables": {
11
- "CMAKE_C_COMPILER": "cl.exe",
12
- "CMAKE_CXX_COMPILER": "cl.exe"
13
- },
14
- "condition": {
15
- "type": "equals",
16
- "lhs": "${hostSystemName}",
17
- "rhs": "Windows"
18
- }
19
- },
20
- {
21
- "name": "x64-debug",
22
- "displayName": "MSVC++ Debug",
23
- "inherits": "windows-base",
24
- "architecture": {
25
- "value": "x64",
26
- "strategy": "external"
27
- },
28
- "cacheVariables": {
29
- "CMAKE_BUILD_TYPE": "Debug"
30
- }
31
- },
32
- {
33
- "name": "x64-release",
34
- "displayName": "x64 Release",
35
- "inherits": "x64-debug",
36
- "cacheVariables": {
37
- "CMAKE_BUILD_TYPE": "Release"
38
- }
39
- },
40
- {
41
- "name": "linux-default",
42
- "displayName": "Linux Debug",
43
- "description": "Sets Ninja generator, compilers, build and install directory, debug build type",
44
- "generator": "Ninja",
45
- "binaryDir": "${sourceDir}/out/build/${presetName}",
46
- "cacheVariables": {
47
- "CMAKE_BUILD_TYPE": "Debug",
48
- "CMAKE_INSTALL_PREFIX": "${sourceDir}/out/install/${presetName}"
49
- },
50
- "vendor": {
51
- "microsoft.com/VisualStudioSettings/CMake/1.0": {
52
- "hostOS": [ "Linux" ]
53
- },
54
- "microsoft.com/VisualStudioRemoteSettings/CMake/1.0": {
55
- "sourceDir": "$env{HOME}/.vs/$ms{projectDirName}"
56
- }
57
- }
58
- },
59
- {
60
- "name": "x64_debug_clang",
61
- "displayName": "Clang Debug",
62
- "description": "Target Windows (64-bit) with the Visual Studio development environment. (Debug)",
63
- "inherits": "windows-base",
64
- "architecture": {
65
- "value": "x64",
66
- "strategy": "external"
67
- },
68
- "cacheVariables": {
69
- "CMAKE_BUILD_TYPE": "Debug",
70
- "CMAKE_C_COMPILER": "clang.exe",
71
- "CMAKE_CXX_COMPILER": "clang.exe"
72
- }
73
- }
74
- ]
75
- }
1
+ {
2
+ "version": 6,
3
+ "configurePresets": [
4
+ {
5
+ "name": "base",
6
+ "hidden": true,
7
+ "generator": "Ninja",
8
+ "binaryDir": "${sourceDir}/build/${presetName}",
9
+ "installDir": "${sourceDir}/install/${presetName}"
10
+ },
11
+ {
12
+ "name": "linux-debug",
13
+ "inherits": "base",
14
+ "displayName": "Linux Debug",
15
+ "cacheVariables": {
16
+ "CMAKE_BUILD_TYPE": "Debug",
17
+ "CMAKE_CXX_FLAGS": "-Wall -ftemplate-backtrace-limit=0 -Og"
18
+ },
19
+ "condition": {
20
+ "type": "equals",
21
+ "lhs": "${hostSystemName}",
22
+ "rhs": "Linux"
23
+ }
24
+ },
25
+ {
26
+ "name": "linux-release",
27
+ "inherits": "base",
28
+ "displayName": "Linux Release",
29
+ "cacheVariables": {
30
+ "CMAKE_BUILD_TYPE": "Release",
31
+ "CMAKE_CXX_FLAGS": "-Wall -ftemplate-backtrace-limit=0 -O3 -DNDEBUG"
32
+ },
33
+ "condition": {
34
+ "type": "equals",
35
+ "lhs": "${hostSystemName}",
36
+ "rhs": "Linux"
37
+ }
38
+ },
39
+ {
40
+ "name": "macos-debug",
41
+ "inherits": "base",
42
+ "displayName": "macOS Debug",
43
+ "cacheVariables": {
44
+ "CMAKE_BUILD_TYPE": "Debug",
45
+ "CMAKE_CXX_FLAGS": "-Wall -Wno-unused-private-field -ftemplate-backtrace-limit=0 -Og"
46
+ },
47
+ "condition": {
48
+ "type": "equals",
49
+ "lhs": "${hostSystemName}",
50
+ "rhs": "Darwin"
51
+ }
52
+ },
53
+ {
54
+ "name": "macos-release",
55
+ "inherits": "base",
56
+ "displayName": "macOS Release",
57
+ "cacheVariables": {
58
+ "CMAKE_BUILD_TYPE": "Release",
59
+ "CMAKE_CXX_FLAGS": "-Wall -Wno-unused-private-field -ftemplate-backtrace-limit=0 -O3 -DNDEBUG"
60
+ },
61
+ "condition": {
62
+ "type": "equals",
63
+ "lhs": "${hostSystemName}",
64
+ "rhs": "Darwin"
65
+ }
66
+ },
67
+ {
68
+ "name": "windows",
69
+ "hidden": true,
70
+ "inherits": "base",
71
+ "condition": {
72
+ "type": "equals",
73
+ "lhs": "${hostSystemName}",
74
+ "rhs": "Windows"
75
+ },
76
+ "toolchainFile": "$env{VCPKG_ROOT}\\scripts\\buildsystems\\vcpkg.cmake"
77
+ },
78
+ {
79
+ "name": "msvc-debug",
80
+ "inherits": "windows",
81
+ "displayName": "MSVC x64 Debug",
82
+ "cacheVariables": {
83
+ "CMAKE_BUILD_TYPE": "Debug",
84
+ "CMAKE_CXX_COMPILER": "cl.exe",
85
+ "CMAKE_CXX_FLAGS": "/EHs /W4 /bigobj /utf-8 /D_CRT_SECURE_NO_DEPRECATE /D_CRT_NONSTDC_NO_DEPRECATE",
86
+ "CMAKE_MSVC_DEBUG_INFORMATION_FORMAT": "EditAndContinue"
87
+ }
88
+ },
89
+ {
90
+ "name": "msvc-release",
91
+ "inherits": "windows",
92
+ "displayName": "MSVC x64 Release",
93
+ "cacheVariables": {
94
+ "CMAKE_BUILD_TYPE": "Release",
95
+ "CMAKE_CXX_COMPILER": "cl.exe",
96
+ "CMAKE_CXX_FLAGS": "/EHs /W4 /bigobj /utf-8 /O2 /DNDEBUG /D_CRT_SECURE_NO_DEPRECATE /D_CRT_NONSTDC_NO_DEPRECATE",
97
+ "CMAKE_MSVC_DEBUG_INFORMATION_FORMAT": "ProgramDatabase"
98
+ }
99
+ },
100
+ {
101
+ "name": "clang-windows-debug",
102
+ "inherits": "windows",
103
+ "displayName": "Clang Windows Debug",
104
+ "cacheVariables": {
105
+ "CMAKE_BUILD_TYPE": "Debug",
106
+ "CMAKE_CXX_COMPILER": "clang-cl.exe",
107
+ "CMAKE_CXX_FLAGS": "/EHs /W4 /bigobj /utf-8 /D_CRT_SECURE_NO_DEPRECATE /D_CRT_NONSTDC_NO_DEPRECATE /clang:-Wno-unused-private-field"
108
+ }
109
+ },
110
+ {
111
+ "name": "clang-windows-release",
112
+ "inherits": "windows",
113
+ "displayName": "Clang Windows Release",
114
+ "cacheVariables": {
115
+ "CMAKE_BUILD_TYPE": "Release",
116
+ "CMAKE_CXX_COMPILER": "clang-cl.exe",
117
+ "CMAKE_CXX_FLAGS": "/EHs /W4 /bigobj /utf-8 /O2 /DNDEBUG /D_CRT_SECURE_NO_DEPRECATE /D_CRT_NONSTDC_NO_DEPRECATE /clang:-Wno-unused-private-field"
118
+ }
119
+ },
120
+ {
121
+ "name": "mingw-debug",
122
+ "inherits": "base",
123
+ "displayName": "Mingw x64 Debug",
124
+ "cacheVariables": {
125
+ "CMAKE_BUILD_TYPE": "Debug",
126
+ "CMAKE_CXX_COMPILER": "g++.exe",
127
+ "CMAKE_CXX_FLAGS": "-Wall -ftemplate-backtrace-limit=0 -Wa,-mbig-obj -Og"
128
+ },
129
+ "condition": {
130
+ "type": "equals",
131
+ "lhs": "${hostSystemName}",
132
+ "rhs": "Windows"
133
+ }
134
+ },
135
+ {
136
+ "name": "mingw-release",
137
+ "inherits": "base",
138
+ "displayName": "Mingw x64 Release",
139
+ "cacheVariables": {
140
+ "CMAKE_BUILD_TYPE": "Release",
141
+ "CMAKE_CXX_COMPILER": "g++.exe",
142
+ "CMAKE_CXX_FLAGS": "-Wall -ftemplate-backtrace-limit=0 -Wa,-mbig-obj -O3 -DNDEBUG"
143
+ },
144
+ "condition": {
145
+ "type": "equals",
146
+ "lhs": "${hostSystemName}",
147
+ "rhs": "Windows"
148
+ }
149
+ }
150
+ ],
151
+ "buildPresets": [
152
+ {
153
+ "name": "linux-debug",
154
+ "displayName": "Build Linux Debug",
155
+ "configurePreset": "linux-debug"
156
+ },
157
+ {
158
+ "name": "linux-release",
159
+ "displayName": "Build Linux Release",
160
+ "configurePreset": "linux-release"
161
+ },
162
+ {
163
+ "name": "macos-debug",
164
+ "displayName": "Build macOS Debug",
165
+ "configurePreset": "macos-debug"
166
+ },
167
+ {
168
+ "name": "macos-release",
169
+ "displayName": "Build macOS Release",
170
+ "configurePreset": "macos-release"
171
+ },
172
+ {
173
+ "name": "msvc-debug",
174
+ "displayName": "Build MSVC x64 Debug",
175
+ "configurePreset": "msvc-debug"
176
+ },
177
+ {
178
+ "name": "msvc-release",
179
+ "displayName": "Build MSVC x64 Release",
180
+ "configurePreset": "msvc-release"
181
+ },
182
+ {
183
+ "name": "clang-windows-debug",
184
+ "displayName": "Build Clang Windows Debug",
185
+ "configurePreset": "clang-windows-debug"
186
+ },
187
+ {
188
+ "name": "clang-windows-release",
189
+ "displayName": "Build Clang Windows Release",
190
+ "configurePreset": "clang-windows-release"
191
+ },
192
+ {
193
+ "name": "mingw-debug",
194
+ "displayName": "Build Mingw x64 Debug",
195
+ "configurePreset": "mingw-debug"
196
+ },
197
+ {
198
+ "name": "mingw-release",
199
+ "displayName": "Build Mingw x64 Release",
200
+ "configurePreset": "mingw-release"
201
+ }
202
+ ]
203
+ }