List of things that this commit brings:
* Makes the project `FetchContent` ready
This is achieved by conditionally executing code that is only useful
for a consumer of the project, such as examples.
* Componentize the install rules
Because this is a header-only library, its install rules should be
categorized in a dev component (think foo-dev packages in apt). By
assigning all install rules to a component, the project no longer
clobbers the global component when vendored (see the previous point).
* Provide an interface similar to the install interface when vendored
This is achieved by adding SYSTEM to the include directories
conditionally and only providing targets that are actually needed.
* Make the project architecture independant
This is achieved by setting the ARCH_INDEPENDENT argument when
generating the version config file, which is available since CMake
3.14. This feature is intended to be used for header-only libraries.
* Misc changes for trivial packaging
The install rules are written in a way that allows package maintainers
to trivially package the project.
Co-authored-by: friendlyanon <friendlyanon@users.noreply.github.com>
also:
- fixed config error in example `.vcxproj` files
- fixed spurious newline after JSON formatting a table
- fixed VS intellisense not detecting TOML_COMPILER_EXCEPTIONS correctly
- moved `parse_result` to a separate header
- made more internal macros require semicolons
- removed some old deprecations
- minor documentation fixes
There's no new functionality here. It's purely tooling + CI stuff:
- moved `python` => `tools`
- moved documentation images to subfolder
- moved `vs/tests` to tests/vs projects
- moved `vs` solution etc to root
- added semicolons to macros
- added cpp.hint to help VS intellisense
- migrated documentation generation to external lib
toml++ is header-only so these should be installed into architecture-independent directories to allow them to be found for crosscompiling regardless of the architecture they were installed on.
Fixes#59.
- renamed options to `snake_case`
- tests, examples and cmake config now explicitly disabled when used as a subproject
- removed small_binaries (it's now implicit when building as release)
- added minimum meson version 0.53