Giter VIP home page Giter VIP logo

signals's Introduction

signals

A simple signals and slots library inspired by boost::signals2

pipeline status coverage report

Getting started

The following tools are needed to configure and build the project:

Tools used to measure code coverage:

Other tools used in this project:

Building

These instructions assume that the project has been cloned into a directory named signals. To configure and build a project, run the commands below.

$ cd signals
$ cmake -S . -B build/
$ cmake --build build/

This will create a static library named libsignals.a in the build/src/ folder.

The project builds a static library by default. To build a shared library, configure the project with BUILD_SHARED_LIBS=On.

$ cmake -DBUILD_SHARED_LIBS=On build/

Both GNU and Clang support colored diagnostics but depending on the build environment the colored output may not be enabled by default. To force colored diagnostics configure the project with COLOR_DIAGNOSTICS=On.

$ cmake -DCOLOR_DIAGNOSTICS=On build/

Building with MSVC and Ninja on Windows

Install Ninja (and ccache) in /usr/bin/ (or C:/Program Files/Git/usr/bin). Prepare the build environment by running the vcvarsall.bat script.

NOTE! In Git BASH, the environment variables set by the batch script are not propagated to the running shell. To work around this, run the command below.

$ eval "$(MSYS_NO_PATHCONV=1 cmd "/C "C:/Program Files \(x86\)/Microsoft Visual Studio/2019/Community/VC/Auxiliary/Build/vcvarsall.bat" amd64 > nul && \
  bash -c 'export -p'")"

To build the project run the below commands.

$ cmake -S . -B build/msvc -G Ninja
$ cmake --build build/msvc

Installing

By default, the install target installs the library in the /usr/local/lib/ folder. To change the installation directory, configure the project with CMAKE_INSTALL_PREFIX.

$ cmake -DCMAKE_INSTALL_PREFIX=build/ -DCMAKE_BUILD_TYPE=Release build/
$ cmake --build build/ --target install

The above command installs the library in the build/lib subdirectory.

NOTE! install target may require root permissions and is only available with Release builds

To uninstall, build the uninstall target or run xargs rm < build/install_manifest.txt.

To use the installed library with my-target, add the following lines to the CMakeLists.txt file.

find_package(signals REQUIRED)
target_link_libraries(my-target signals::signals)

Packaging

CMake comes with CPack, a cross-platform software packaging tool that makes it easy to create distributable packages. To create a binary package, run the command below.

$ cmake --build build --target package

To build a source package, run the command below.

$ cmake --build build --target package_source

Testing

This project is being developed using Test-driven development (TDD). Tests are written using the GoogleTest C++ test framework, which is fetched at configure time and built along with the tests.

To run unit tests, build the check target.

$ cmake --build build/ --target check

This builds and runs unit tests and shows a summary of the results. A more detailed message is shown if any of the tests fail.

NOTE! Unit tests are disabled by defauld when used as a subproject. To enable unit tests, configure the project with SIGNALS_TEST=On.

Code coverage

To measure code coverage, configure the project with CODE_COVERAGE=On and then build the code-coverage target.

$ cmake -DCODE_COVERAGE=On build/
$ cmake --build build/ --target check-coverage

This generates a code coverage report in the build/signals-coverage folder. View build/signals-coverage/index.html to see the results.

NOTE! Enabling code coverage forces the build type to be Debug

License

signals is distributed under the MIT license.

signals's People

Contributors

antenous avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.