From eda3a98e2cd550892c02c8d2de23e319541bf0b4 Mon Sep 17 00:00:00 2001 From: Martchus Date: Sat, 16 Apr 2016 19:17:29 +0200 Subject: [PATCH] updated README.md to reflect latest changes --- README.md | 45 ++++++++++++++++++++++++++++++++------------- 1 file changed, 32 insertions(+), 13 deletions(-) diff --git a/README.md b/README.md index 783b444..fcab650 100644 --- a/README.md +++ b/README.md @@ -4,44 +4,63 @@ Common C++ classes and routines used by my applications such as argument parser, ## Features The library utilizes: * parsing command-line arguments -* chronology (DateTime and TimeSpan classes) -* conversion of primitive data types to byte-buffers (litte-endian, big-endian) and vice versa +* dealing with chronology (DateTime, TimeSpan) +* conversion of primitive data types to byte-buffers and vice versa, supporting + litte-endian and big-endian * common string conversions/operations, eg. - split, join, findAndReplace - numberToString, stringToNumber - encodeBase64, decodeBase64 * IO - - reading/writing primitive data types of various sizes (little-endian, big-endian) + - reading/writing primitive data types of various sizes (little-endian and big-endian) - reading/writing terminated strings and size-prefixed strings - bitwise reading - parsing INI files +* building with CMake by providing some modules and templates ## Build instructions ### Requirements +#### Build-only dependencies * C++ compiler supporting C++11 (I've tested GNU g++, Clang and mingw-w64 yet.) -* CMake to build -* cppunit to build and run unit tests -* The c++utilities library only depends on the C++ standard library. For dependencies of my other projects - check the README.md of these projects. +* CMake (I've only tested 3.5.1 so far.) +* cppunit for unit tests (optional) + +#### Runtime dependencies +* The c++utilities library itself only needs the C/C++ standard library. +* For dependencies of my other projects check the README.md of these projects. ### How to build Just run: ``` -cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX="/where/you/want/to/install" "path/to/projectdirectory" +cd "path/to/build/directory" +cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX="/final/install/location" "path/to/projectdirectory" make make check # build and run unit tests (optional) -make install +make DESTDIR="/temporary/install/location" install ``` +#### General notes +* The make option *-j* can be used for concurrent compilation. +* Building with qmake is not supported anymore. + +#### Building for Windows Building for Windows with Mingw-w64 cross compiler can be utilized using a small [cmake wrapper from Fedora](https://aur.archlinux.org/cgit/aur.git/tree/mingw-cmake.sh?h=mingw-w64-cmake): ``` -${_arch}-cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX="/where/you/want/to/install" "path/to/projectdirectory" -make && make install +${_arch}-cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX="/final/install/location" "path/to/projectdirectory" +make DESTDIR="/temporary/install/location" install-mingw-w64-strip ``` -To create *.ico files for application icons ffmpeg is required. +* To create the \*.ico file for the application icon ffmpeg/avconv is required. +* The target ```install-mingw-w64-strip``` in the example will only install files + suitable for creating a cross-compiler package and additionally strip the binaries. -In any case, the make option *-j* can be used for concurrent compilation. +#### Development builds +During development I find it useful to build all required projects (for instace c++utilities, qtutilities, tagparser and tageditor) as one big project. + +This can be easily achieved by using CMakes ```add_subdirectory()``` function. For project files +see the repository [subdirs](https://github.com/Martchus/subdirs). + +For a debug build, just use ```-DCMAKE_BUILD_TYPE=Debug```. ### Creating Arch Linux package The repository [PKGBUILDs](https://github.com/Martchus/PKGBUILDs) contains files for building Arch Linux packages.