Skip to content

Release Version 1.0

Latest
Compare
Choose a tag to compare
@dlinten dlinten released this 03 Oct 10:09

Sanity Version 1.0

Bringing some sanity to cross-platform builds with CMake


Welcome to Sanity! Sanity makes CMake easy to use, by generating dependencies to commonly used libraries, automatically fetching and building the source from the vendor and then including them into your CMake C++ Project.

Current Supported Libraries

amqpcpp

AMQP-CPP is a C++ library for communicating with a RabbitMQ message broker. The library can be used to parse incoming data from a RabbitMQ server, and to generate frames that can be sent to a RabbitMQ server.
Unlike all other AMQP libraries, this AMQP-CPP library does not make a connection to RabbitMQ by itself, nor does it create sockets and/or performs IO operations. As a user of this library, you first need to set up a socket connection to RabbitMQ by yourself, and implement a certain interface that you pass to the AMQP-CPP library and that the library will use for IO operations.

asio

asio is a cross-platform C++ library for network and low-level I/O programming that provides developers with a consistent asynchronous model using a modern C++ approach.

boost

Boost provides free portable peer-reviewed C++ libraries. The emphasis is on portable libraries which work well with the C++ Standard Library.

curl

curl is used in command lines or scripts to transfer data. It is also used in cars, television sets, routers, printers, audio equipment, mobile phones, tablets, settop boxes, media players and is the internet transfer backbone for thousands of software applications affecting billions of humans daily.

devil

Developer's Image Library (DevIL) is a programmer's library to develop applications with very powerful image loading capabilities, yet is easy for a developer to learn and use.

gtest

Google C++ Testing Framework helps you write better C++ tests. No matter whether you work on Linux, Windows, or a Mac, if you write C++ code, Google Test can help you.

icu

ICU is a mature, widely used set of C/C++ and Java libraries providing Unicode and Globalization support for software applications. ICU is widely portable and gives applications the same results on all platforms and between C/C++ and Java software.

jpeg

This package contains C software to implement JPEG image encoding, decoding,
and transcoding. JPEG is a standardized compression method for full-color
and grayscale images.

lcms

Little CMS intends to be an OPEN SOURCE small-footprint color management engine, with special focus on accuracy and performance. It uses the International Color Consortium standard (ICC), which is the modern standard when regarding to color management.

ldns

The goal of ldns is to simplify DNS programming, it supports recent RFCs like the DNSSEC documents, and allows developers to easily create software conforming to current RFCs, and experimental software for current Internet Drafts. A secondary benefit of using ldns is speed; ldns is written in C it should be a lot faster than Perl.

libmng

MNG, pronounced "ming", is the animation-brother of PNG, also known as Portable Network Graphics and pronounced "ping"

mysql

MySQL is an open-source relational database management system (RDBMS).

mysqlcppcon

MySQL Connector/C++ is one of the latest connectors for MySQL, developed by Sun Microsystems. The MySQL connector for C++ provides an object-oriented application programming interface (API) and a database driver for connecting C++ applications to the MySQL Server.

openssl

OpenSSL is an open source project that provides a robust, commercial-grade, and full-featured toolkit for the Transport Layer Security (TLS) and Secure Sockets Layer (SSL) protocols. It is also a general-purpose cryptography library.

protobuf

Protocol Buffers (a.k.a., protobuf) are Google's language-neutral, platform-neutral, extensible mechanism for serializing structured data.

sdl

Simple DirectMedia Layer is a cross-platform development library designed to provide low level access to audio, keyboard, mouse, joystick, and graphics hardware via OpenGL and Direct3D. It is used by video playback software, emulators, and popular games including Valve's award winning catalog and many Humble Bundle games.

tiff

A primary goal of TIFF is to provide a rich environment within which applications
can exchange image data. This richness is required to take advantage of the
varying capabilities of scanners and other imaging devices.

Usage

  1. Pull the latest version of sanity into your source tree, if using git, simply add it as a submodule.
  2. Include sanity into your CMakeLists.txt file
include (sanity/cmake/sanity.cmake)

Then to add gtest and boost for example, simply add the following and you're done.

sanity_require(LIBRARY boost VERSION any)
sanity_require(LIBRARY gtest VERSION any)

Sanity will grab the source, build the libraries, and include it into your projects.