Skip to content

joseasoler/imogrify

Repository files navigation

imogrify

License: MPL 2.0

Batch image format conversion tool.

Contributing

imogrify encourages community involvement and contributions, check CONTRIBUTING.md for details. Contributors can be found in the contributors list.

License

imogrify is licensed under the Mozilla Public License, v. 2.0. See the LICENSE file and the MPL 2.0 FAQ for details.

Building

Building imogrify requires CMake 3.25 or newer and a compiler with C++20 support. It supports the Windows and Linux operative systems.

CMake options

  • CMAKE_COMPILE_WARNING_AS_ERROR: Compilers treat warnings as errors. Off by default.
  • IMOGRIFY_BUILD_UNIT_TESTS: Builds unit tests. Off by default.
  • IMOGRIFY_CLANG_FORMAT: Check code formatting using clang-format. Warnings will be treated as errors if CMAKE_COMPILE_WARNING_AS_ERROR is enabled. Off by default.
  • IMOGRIFY_CLANG_TIDY: Analyze the project using clang-tidy. Warnings will be treated as errors if CMAKE_COMPILE_WARNING_AS_ERROR is enabled. Off by default.
  • IMOGRIFY_CMAKE_VERBOSE: Show additional information during CMake configuration. Off by default.
  • IMOGRIFY_SHOW_DEBUG_REPORTS: Display debug reports on release builds. Off by default.
  • IMOGRIFY_USE_LIBCPUID: Provide runtime information using libcpuid. Off by default.
  • IMOGRIFY_USE_LIBASSERT: Implement asserts using libassert. Off by default.

Dependencies

Dependencies are retrieved through the find_package CMake feature.

  • ConcurrentQueue: An industrial-strength lock-free queue for C++.

  • fmt: Modern formatting and printing library.

  • tl-expected: Single header implementation of std::expected with functional-style extensions.

Optional dependencies

These are only required if a CMake option is enabled.

  • Catch2: A modern, C++-native, test framework for unit-tests. IMOGRIFY_BUILD_UNIT_TESTS.

  • libcpuid: Provides CPU identification. IMOGRIFY_USE_LIBCPUID.

  • libassert: The most over-engineered C++ assertion library. IMOGRIFY_USE_LIBASSERT.

Included dependencies

These libraries are included in the imogrify repository. They reside in the thirdparty subfolder, and each one includes its separate, original license. These libraries are not modified from upstream unless explicitly mentioned.

  • Enchantum: A modern header-only library for compile-time enum reflection.

vcpkg

imogrify has optional vcpkg support, disabled by default. imogrify uses custom ports for some of its dependencies, which can be found in the cmake/vcpkg/ports subfolder.

CMake presets

imogrify provides a set of CMake presets used during development.

Acknowledgements

Check the ACKNOWLEDGEMENTS.md file for details.