Usage of -fvisibility=hidden is the recommended default for DSO's.
If the spdlog build is for a shared library, then API symbols have
SPDLOG_API marking on them, and cause the symbol to be exported, with
other symbols now hidden by default.
If the build is for a static library with position-independent code, then
spdlog is to be embedded as implementation detail in another shared
library or executable. In that case we don't want to export any symbol.
Conveniently, SPDLPG_API in that case resolves to nothing, so with the
default of hidden all symbols are made hidden.
* Support compile-time format string checking with std::format
* Fix pre-VS 17.5 compilation
* Fix compilation without wchar_t support
* What am I doing
* Bring back fmt optimization
* Move to_string_view to common.h
* Fix SPDLOG_CONSTEXPR_FUNC emitting duplicate symbol errors when building in C++11
* Also add inline on VS 2013
* Appender doesn't work on wide strings
As per CMake's Importing and Exporting Guide[1],
configure_package_config_file() should be used for configuring the
package configuration file, not the regular configure_file() function.
This ensures that a spdlog package built on one system (with a given
directory tree) can be imported from a different system -
e.g. creating a pre-compiled spdlog package for use on different
systems.
[1]: https://cmake.org/cmake/help/git-stage/guide/importing-exporting/index.html#id8
By introducing 'no module' support this inadvertently triggered the find_package to use the "full version" version selection.
From https://cmake.org/cmake/help/latest/command/find_package.html#version-selection:
> When the [version] argument is given, Config mode will only find a version of the package that claims compatibility with the requested version (see format specification).
FMT does not set this configuration https://github.com/fmtlib/fmt/blob/7.1.3/support/cmake/fmt-config.cmake.in... but regardless it would not be "any compatibility" based on version semantics.
Which causes this error. v1.8.2 builds perfectly fine.
```
CMake Error at CMakeLists.txt:181 (find_package):
Could not find a configuration file for package "fmt" that is compatible
with requested version "5.3.0".
The following configuration files were considered but not accepted:
/home/proj/build/e98598522b7c484d9220bffc7ec84474515facbc/fmt-config.cmake, version: 7.1.3
```