diff --git a/.gitignore b/.gitignore
index 31edad31..3b4b5c66 100644
--- a/.gitignore
+++ b/.gitignore
@@ -13,7 +13,7 @@
*.a
-# oocmake ignores
+# cmakepp ignores
tmp
bin
release
diff --git a/README.md b/README.md
index 2f2714ea..224418e8 100644
--- a/README.md
+++ b/README.md
@@ -5,7 +5,7 @@
[![GitHub stars](https://img.shields.io/github/stars/toeb/cmakepp.svg?)](https://github.com/toeb/cmakepp/stargazers)
[![GitHub forks](https://img.shields.io/github/forks/toeb/cmakepp.svg)](https://github.com/toeb/cmakepp/network)
[![GitHub issues](https://img.shields.io/github/issues/toeb/cmakepp.svg)](https://github.com/toeb/cmakepp/issues)
-[![biicode block](https://img.shields.io/badge/toeb%2Fcmakepp-DEV%3A0-yellow.svg)](https://www.biicode.com/toeb/cmakepp)
+[![Build Status](https://webapi.biicode.com/v1/badges/toeb/toeb/cmakepp/master?pleasegithubstopcachingmycoolbadge)](https://www.biicode.com/toeb/cmakepp)
[![Project Stats](https://www.ohloh.net/p/cmakepp/widgets/project_thin_badge.gif)](https://www.ohloh.net/p/cmakepp)
@@ -19,6 +19,7 @@ Look through the files in the package. Most functions will be commented and the
`cmakepp` has a lot of different functions. I tried to subdivide them into some meaningful sections.
+* [Creating Checksums](cmake/checksum/README.md)
* [Collections](cmake/collections/README.md)
* [Date/Time](cmake/datetime/README.md)
* [Events](cmake/events/README.md)
@@ -26,6 +27,7 @@ Look through the files in the package. Most functions will be commented and the
* [Functions](cmake/function/README.md)
* [Logging Functions](cmake/log/README.md)
* [Maps - Structured Data in CMake](cmake/map/README.md)
+* [Navigation Functions](cmake/navigation/README.md)
* [Objects ](cmake/object/README.md)
* [Package Management](cmake/package/README.md)
* [User Data](cmake/persistence/README.md)
@@ -59,6 +61,8 @@ I have developed some samples to show off `cmakepp`'s capabilities. Here you can
* [Creating a Compressed Package](samples/04-create-simple-compressed-package/README.md)
* [Creating and Installing a Package with an Install Hook](samples/05-create-install-simple-package-with-install-script/README.md)
* [Installing and Using Projects with vanilla `CMake`](samples/06-vanilla-cmake-project-with-install/README.md)
+* [Adding Boost to you `CMake` project](samples/07-adding-boost-by-package-manager/README.md)
+* [Download, Build and Use `jsoncpp`](samples/09-download-build-use-jsoncpp/README.md)
@@ -154,6 +158,7 @@ I would be very happy If you choose to contribute to `cmakepp`. You can open any
If you want to change something you may send pull requests through github. Normally I will check them quickly and `travis-ci` will build them. I suggest you run all tests using the sublime project before you create a pull request to see if anything breaks. (the master branch will have to pass the tests)
+Also if you want to support me financially for all the hardwork - consider donating a couple of $
# Developer Guidlines
@@ -267,7 +272,7 @@ This is possible by overwriting CMakes default return() function with a macro. I
"Host":"httpbin.org",
"User-Agent":"curl/7.16.1"
},
- "origin":"85.180.184.251",
+ "origin":"87.157.218.55",
"url":"http://httpbin.org/get?key=value"
}
diff --git a/README.md.in b/README.md.in
index 0d6d858d..a106bceb 100644
--- a/README.md.in
+++ b/README.md.in
@@ -5,7 +5,7 @@
[![GitHub stars](https://img.shields.io/github/stars/toeb/cmakepp.svg?)](https://github.com/toeb/cmakepp/stargazers)
[![GitHub forks](https://img.shields.io/github/forks/toeb/cmakepp.svg)](https://github.com/toeb/cmakepp/network)
[![GitHub issues](https://img.shields.io/github/issues/toeb/cmakepp.svg)](https://github.com/toeb/cmakepp/issues)
-[![biicode block](https://img.shields.io/badge/toeb%2Fcmakepp-DEV%3A0-yellow.svg)](https://www.biicode.com/toeb/cmakepp)
+[![Build Status](https://webapi.biicode.com/v1/badges/toeb/toeb/cmakepp/master?pleasegithubstopcachingmycoolbadge)](https://www.biicode.com/toeb/cmakepp)
[![Project Stats](https://www.ohloh.net/p/cmakepp/widgets/project_thin_badge.gif)](https://www.ohloh.net/p/cmakepp)
@@ -111,6 +111,7 @@ I would be very happy If you choose to contribute to `cmakepp`. You can open any
If you want to change something you may send pull requests through github. Normally I will check them quickly and `travis-ci` will build them. I suggest you run all tests using the sublime project before you create a pull request to see if anything breaks. (the master branch will have to pass the tests)
+Also if you want to support me financially for all the hardwork - consider donating a couple of $
# Developer Guidlines
diff --git a/README.md.old b/README.md.old
deleted file mode 100644
index da724b72..00000000
--- a/README.md.old
+++ /dev/null
@@ -1,2202 +0,0 @@
-![cmakepp logo](https://raw.githubusercontent.com/toeb/cmakepp/master/logo.png "cmakepp logo")
-
-## A CMake Enhancement Suite
-[![Travis branch](https://img.shields.io/travis/toeb/cmakepp/master.svg)](https://travis-ci.org/toeb/cmakepp)
-[![GitHub stars](https://img.shields.io/github/stars/toeb/cmakepp.svg?)](https://github.com/toeb/cmakepp/stargazers)
-[![GitHub forks](https://img.shields.io/github/forks/toeb/cmakepp.svg)](https://github.com/toeb/cmakepp/network)
-[![GitHub issues](https://img.shields.io/github/issues/toeb/cmakepp.svg)](https://github.com/toeb/cmakepp/issues)
-[![biicode block](https://img.shields.io/badge/toeb%2Fcmakepp-DEV%3A0-yellow.svg)](https://www.biicode.com/toeb/cmakepp)
-[![Project Stats](https://www.ohloh.net/p/cmakepp/widgets/project_thin_badge.gif)](https://www.ohloh.net/p/cmakepp)
-
-
-# Installing
-
-You have multiple options for install `cmakepp` the only prerequisite for all options is that cmake is installed with version `>=2.8.7`.
-
-
-* [Install by Console](#install_console) - Recommended
-* Use the [Biicode Block](https://www.biicode.com/toeb/cmakepp)
-* [Download a release](https://github.com/toeb/cmakepp/releases) and include it in your cmake script file - If you do not want to run the tests or have access to the single function files this option is for you
- - [Manually setup aliases](#install_aliases)
-* Clone the repository and include `cmakepp.cmake` in your `CMakeLists.txt` (or other cmake script)
-
-# Usage
-Look through the files in the package. Most functions will be commented and the other's usage can be inferred. All functions are avaiable as soon as you include the cmakepp.cmake file.
-
-# Testing
-To test the code (alot is tested but not all) run the following in the root dir of cmakepp *this takes long :)*
-
-```
-cmake -P build/script.cmake
-```
-
-# Feature Overview
-
-`cmakepp` is a general purpose library for cmake. It contains functionality that was missing in my opinion and also wraps some cmake functionality to fit to the style of this library.
-
-* Features
- * [interactive cmake console](#icmake) (`cmake -P icmake.cmake`)
- * [lists](#lists) - common and usefull list and set operations.
- - [ranges](#ranges) range based access to lists
- * [maps](#maps) - map functions and utility functions (nested data structures for cmake)
- * graph algorithms
- * serialization/deserialization
- * [json](#json)
- * [quickmap format](#quickmap) (native to cmake)
- * [xml](#xml)
- * [assign](#assign) universal assign ease of use for maps and functions
- * [expression syntax](#expr).
- * `obj("{id:1,prop:{hello:3, other:[1,2,3,4]}}")` -> creates the specified object
- * [eval](#eval) - evaluates cmake code and is the basis of many advanced features
- * [shell](#shell) - "platform independent" shell script execution
- * [aliases](#aliases) - platform independent shell aliases
- * [console](#console) - functions for console input and outputf
- * [filesystem](#filesystem) - directory and file functions with close relations to bash syntax
- * [mime types](#mimetypes) - mime type based file handling
- * [compression/decompression](#compression) - compressing and decompressing tgz and zip files
- * [command execution](#execute) simplifying access to exectables using the shell tools.
- * [cmake tool compilation](#tooling) simple c/c++ tools for cmake
- * debugging
- * some convenience functions
- * `breakpoint()` - stops execution at specified location and allows inspection of cmake variables, execution of code (if `-DDEBUG_CMAKE` was specified in command line)
- * [version control systems](#vcs)
- * `hg()` convenience function for calling mercurial vcs
- * `git()` convenience function for calling git vcs
- * `svn()` convenience function for calling subversion vcs
- * utility methods for working with the different systems
- * [package search and retrieval](#packages)
- * [cmake](#cmake) calling cmake from cmake.
- * [date/time](#datetime)
- * function for getting the correct date and time on all OSs
- * get milliseconds since epoch
- * [events](#events) allows registering event handlers and emitting events
- * [Windows Registry](#windowsregstry)
- * `reg()` shorthand for working with windows registry command line interface
- * read write manipulate registry values
- * query registry keys for values
- * [string functions](#stringfunctions) - advanced string manipulation
- * [URIs](#uris) - Uniform Resource Identifier parsing and formatting
- * [HTTP client](#http_client) - Perform HTTP/GET HTTP/PUT request with pure cmake.
- * [user data](#userdata) - persists and retrieves data for the current user (e.g. allowing cross build/ script configuration)
- * functions
- * [returning values](#return)
- * define dynamic functions (without cluttering the namespace)
- * call functions dynamically (basically allowing `${functionName}(arg1 arg2 ...)` by typing `call(${functionName}(arg1 arg2 ...))`)
- * set a variable to the result of functions `rcall(result = somefunction())`
- * lambda functions (a shorthand syntax for defining inline functions. `(var1,var2)-> do_somthing($var1); do_something_else($var2)`
- * import functions (from files, from string, ...)
- * [objects](#objects) - object oriented programming with prototypical inheritance, member functions
- * [process management](#process_management) - platform independent forking, waiting, controlling separate process from cmake
- * [Targets](#targets)
- * [access to a list of all defined targets](#target_list)
- * easier access to target properties
- *
- * [implementation notes](#implementation_notes)
-
-
-*NOTE: the list is still incomplete*
-
-
-# Install by Console
-
-For ease of use I provide you with simple copy paste code for your console of choice. These scripts download the `install.cmake` file and execute it. This file in turn downloads `cmakepp` and adds itself to your os (creating aliases and setting a environment variable - which allow you to use [icmake](#icmake) and [cmakepp cli](#cmake_cli) from the console).
-
-*Bash*
-```
-#!bin/bash
-wget https://raw.github.com/toeb/cmakepp/master/install.cmake && cmake -P install.cmake && rm install.cmake
-```
-
-*Powershell*
-```
-((new-object net.webclient).DownloadString('https://raw.github.com/toeb/cmakepp/master/install.cmake')) |`
-out-file -Encoding ascii install.cmake; `
-cmake -P install.cmake; `
-rm install.cmake;
-
-
-```
-
-
-# Manually setting up aliases
-
-
-
-# Refs
-
-CMake has a couple of scopes every file has its own scope, every function has its own scope and you can only have write access to your `PARENT_SCOPE`. So I searched for simpler way to pass data throughout all scopes. My solution is to use CMake's `get_property` and `set_property` functions. They allow me to store and retrieve data in the `GLOBAL` scope - which is unique per execution of CMake. It is my RAM for cmake - It is cleared after the programm shuts down.
-
-I wrapped the get_property and set_property commands in these shorter and simple functions:
-
-```
-ref_new() # returns a unique refernce (you can also choose any string)
-ref_set(ref [args ...]) # sets the reference to the list of arguments
-ref_get(ref) # returns the data stored in
-
-# some more specialized functions
-# which might be faster in special cases
-ref_setnew([args ...]) # creates, returns a which is set to
-ref_print() # prints the ref
-ref_isvalid() # returns true iff the ref is valid
-ref_istype() # returns true iff ref is type
-ref_gettype() # returns the (if any) of the ref
-ref_delete() # later: frees the specified ref
-ref_append( [args ...])# appends the specified args to the 's value
-ref_append_string() # appends to 's value
-```
-
-*Example*:
-```
- # create a ref
- ref_new()
- ans(ref)
- assert(ref)
-
- # set the value of a ref
- ref_set(${ref} "hello world")
-
-# retrieve a value by dereferencing
-ref_get(${ref})
-ans(val)
-assert(${val} STREQUAL "hello world")
-
-# without generating the ref:
-ref_set("my_ref_name" "hello world")
-ref_get("my_ref_name")
-ans(val)
-assert(${val} STREQUAL "hello world")
-```
-
-
-# Maps
-
-Maps are very versatile and are missing dearly from CMake in my opinion. Maps are references as is standard in many languages. They are signified by having properties which are adressed by keys and can take any value.
-
-Due to the "variable variable" system (ie names of variables are string which can be generated from other variables) it is very easy to implement the map system. Under the hood a value is mapped by calling `ref_set(${map}.${key})`.
-
-
-## Functions and Datatypes
-Using refs it easy to implement a map datastructure:
-```
-map_new() # returns a unique reference to a map
-map_get(map key) # returns the value of map[key], fails hard if key does not exist
-map_has(map key) # returns true iff map[key] was set
-map_set(map key [arg ...]) # sets map[key]
-map_keys(map) # returns all keys which were set
-map_tryget(map key) # returns the stored value or nothing: ""
-map_sethidden(map key) # sets a field in the map without adding the key to the keys collection
-map_remove()
-
-# some specialized functions
-map_append()
-map_append_string()
-
-```
-
-* `mm():