Skip to content

Commit

Permalink
Merge remote-tracking branch 'upstream/master'
Browse files Browse the repository at this point in the history
  • Loading branch information
carlos_felix committed Oct 23, 2023
2 parents 8e21dff + a19c100 commit faa706d
Show file tree
Hide file tree
Showing 6 changed files with 580 additions and 100 deletions.
127 changes: 64 additions & 63 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,9 +22,9 @@
Share on [![Tweet](https://img.shields.io/twitter/url/http/shields.io.svg?style=social)](https://twitter.com/intent/tweet?text=Header-Only%20C++%20Library%20for%20Graph%20Representation%20and%20Algorithms%204&url=https://github.com/ZigRazor/CXXGraph&hashtags=cpp,headeronly,library,opensource,developers)
<br/><br/>


## Introduction
**CXXGraph** is a small library, header only, that manages the Graph and it's algorithms in **C++**. In other words a "Comprehensive C++ Graph Library".
An alternative to [Boost Graph Library (BGL)](https://www.boost.org/doc/libs/1_77_0/libs/graph/doc/index.html).
**CXXGraph** is a comprehensive C++ library that manages graph algorithms. This header-only library serves as an alternative to the [Boost Graph Library (BGL)](https://www.boost.org/doc/libs/1_77_0/libs/graph/doc/index.html).

## Warning ⚠️

Expand All @@ -49,8 +49,8 @@ Happy Coding!! 😄

**We are looking for:**

- **Site Developer** for the development of the CXXGraph site ( for the moment on GitHub Page );
- **Developers and Committers**, also at *first experience*, we will guide you step by step to the open-source world!
- **A Web Developer** for the development of the CXXGraph website. All documentation is currently hosted on this GitHub page.
- **Developers and Contributors** to provide input. If you are new to the open-source world, we will guide you step by step!

If you are interested, please contact us at [email protected] or contribute to this project. We are waiting for you!

Expand Down Expand Up @@ -173,175 +173,176 @@ If you are interested, please contact us at [email protected] or contribute to

### Install Linux Tarballs

On Unix/Linux system you need to execute the following command to install:
To install on Unix/Linux systems, execute the following from the command line:

`$ sudo tar xjf CXXGraph-{version}.tar.bz2`

to uninstall:
To uninstall:

`$ sudo rm -f /usr/include/Graph.hpp /usr/include/CXXGraph*`

### Install RPM

On Fedora/CentOS/RedHat system you need to execute the following command to install:
To install on Fedora/CentOS/RedHat systems, execute the following from the command line:

`$ sudo rpm -ivh CXXGraph-{version}.noarch.rpm`

to uninstall:
To uninstall:

`$ sudo rpm -e CXXGraph-{version}`

### Install DEB

On Debian/Ubuntu system you need to execute the following command to install:
To install on Debian/Ubuntu systems, execute the following from the command line:

`$ sudo dpkg -i CXXGraph_{version}.deb`

to uninstall:
To uninstall:

`$ sudo apt-get remove CXXGraph`

### Install From Source

You can install from source the library using CMake. After the compilation phase, you can use:
For self-compiled installations using CMake, execute the following from the command line once compilation is complete:

`$ sudo make install`

to install the library.

## Classes Explanation

The Classes Explanation can be found in the [Doxygen Documentation](https://rawcdn.githack.com/ZigRazor/CXXGraph/master/docs/html/index.html), in the [Classes Section](https://rawcdn.githack.com/ZigRazor/CXXGraph/master/docs/html/classes.html)
The Classes Explanation can be found in the [Classes Section](https://rawcdn.githack.com/ZigRazor/CXXGraph/master/docs/html/classes.html) of the [Doxygen Documentation](https://rawcdn.githack.com/ZigRazor/CXXGraph/master/docs/html/index.html)

## Requirements
## Prerequisites

- The minimum C++ standard required is **C++17**
- A GCC compiler version greater than 7.3.0 *OR*
- A MSVC compiler that supports C++17
- The minimum C++ standard required is **C++17**
- A GCC compiler version 7.3.0 and later *OR* a MSVC compiler that supports C++17

## How to use

The use of the library is very simple, **just put the header file where you need!**
To use the library **simply put the header file where you need it.** It's that easy!

## Example

Work in Progess
Work in Progress

## Unit-Test Execution

The Unit-Test required the CMake version greater than 3.9 and the **google test** library.
The Unit-Test requires CMake 3.9 and later, and the **[GoogleTest](https://github.com/google/googletest)** library.

### Google Test Installation
### Install GoogleTest

[GoogleTest](https://github.com/google/googletest)

```bash
git clone https://github.com/google/googletest.git
cd googletest # Main directory of the cloned repository.
mkdir -p build # Create a directory to hold the build output.
cd googletest # Main directory of the cloned repository
mkdir -p build # Create a directory to hold the build output
cd build
cmake .. # Generate native build scripts for GoogleTest.
cmake .. # Generate native build scripts for GoogleTest
make # Compile
sudo make install # Install in /usr/local/ by default
```

### How to Compile Test
### How to Compile GoogleTest

From the base directory:

```bash
mkdir -p build # Create a directory to hold the build output.
mkdir -p build # Create a directory to hold the build output
cd build # Enter the build folder
cmake .. # Generate native build scripts for GoogleTest.
cmake .. # Generate native build scripts for GoogleTest
make # Compile
```

### How to Run Test
### How to Run GoogleTest

After the compilation, you can run the executable that is under the "build" directory with the name "test_exe", with the simple command `./test_exe`.
After the build has compiled, run the "test_exe" executable in the "build" directory with the following command:

`./test_exe`

## Benchmark Execution

The Benchmark required the CMake version greater than 3.9 and the **google test** and the **google benchmark** library.
The Benchmark requires CMake 3.9 and later, the **GoogleTest** library, and the **Google Benchmark** library.

### Google Benchmark Installation
### Install Google Benchmark

[Google Benchmark](https://github.com/google/benchmark)

```bash
# Check out the library.
# Check out the library
$ git clone https://github.com/google/benchmark.git
# Benchmark requires Google Test as a dependency. Add the source tree as a subdirectory.
# Google Benchmark requires GoogleTest as a dependency. Add the source tree as a subdirectory
$ git clone https://github.com/google/googletest.git benchmark/googletest
# Go to the library root directory
# Go to the library's root directory
$ cd benchmark
# Make a build directory to place the build output.
# Make a build directory to place the build output
$ cmake -E make_directory "build"
# Generate build system files with cmake.
# Generate the build system files with CMake
$ cmake -E chdir "build" cmake -DCMAKE_BUILD_TYPE=Release ../
# or, starting with CMake 3.13, use a simpler form:
# If starting with CMake 3.13, you can use the following:
# cmake -DCMAKE_BUILD_TYPE=Release -S . -B "build"
# Build the library.
# Build the library
$ cmake --build "build" --config Release
# install library
# Install the library
$ sudo cmake --build "build" --config Release --target install
```

### How to Compile Benchmark
### How to Compile Google Benchmark

From the base directory:

```bash
mkdir -p build # Create a directory to hold the build output.
mkdir -p build # Create a directory to hold the build output
cd build # Enter the build folder
cmake -DBENCHMARK=ON .. # Generate native build scripts for GoogleTest.
cmake -DBENCHMARK=ON .. # Generate native build scripts for GoogleTest
make # Compile
```

### How to Run Benchmark
### How to Run Google Benchmark

After the build has compiled, run the "benchmark" executable in the "build" directory with the following command:

After the compilation, you can run the executable that is under the "build" directory with the name "benchmark", with the simple command `./benchmark`.
`./benchmark`

### Benchmark Results

You can check benchmark result at this [link](https://zigrazor.github.io/CXXGraph/dev/bench/)
You can check the benchmark result using this [link](https://zigrazor.github.io/CXXGraph/dev/bench/).

## Packaging

### Tarballs

To create tarballs package you need to follow the following steps:
To create a tarball package, execute the following from the command line:

```bash
# Enter Packaging Directory
$ cd packaging
# execute the script to generate tarballs
# Execute the script to generate tarballs
$ ./tarballs.sh
```

### RPM

#### (Fedora/CentOS/RedHat)

To create rpm package you need to follow the following steps:
To create an RPM package, execute the following from the command line:

```bash
# Enter Packaging Directory
$ cd packaging/rpm
# execute the script to generate tarballs
# Execute the script to generate tarballs
$ ./make_rpm.sh
```

### DEB

#### (Debian/Ubuntu)

To create deb package you need to follow the following steps:
To create a deb package, execute the following from the command line:

```bash
# Enter Packaging Directory
$ cd packaging/deb
# execute the script to generate tarballs
# Execute the script to generate tarballs
$ ./make_deb.sh
```

Expand Down Expand Up @@ -575,10 +576,10 @@ The lowest value is taken as partition Id.
## How to contribute

[![GitHub contributors](https://img.shields.io/github/contributors/ZigRazor/CXXGraph.svg)](https://GitHub.com/ZigRazor/CXXGraph/graphs/contributors/)
If you want give your support you can create a ***pull request*** [![GitHub pull-requests](https://img.shields.io/github/issues-pr/ZigRazor/CXXGraph.svg)](https://GitHub.com/ZigRazor/CXXGraph/pull/) or report an ***issue*** [![GitHub issues](https://img.shields.io/github/issues/ZigRazor/CXXGraph.svg)](https://GitHub.com/ZigRazor/CXXGraph/issues/).
If you want to change the code, or fix issue, or implement a new feature please read our [CONTRIBUTING Guide](https://github.com/ZigRazor/CXXGraph/blob/master/CONTRIBUTING.md)
If you want to give your support you can create a ***pull request*** [![GitHub pull-requests](https://img.shields.io/github/issues-pr/ZigRazor/CXXGraph.svg)](https://GitHub.com/ZigRazor/CXXGraph/pull/) or report an ***issue*** [![GitHub issues](https://img.shields.io/github/issues/ZigRazor/CXXGraph.svg)](https://GitHub.com/ZigRazor/CXXGraph/issues/).
If you want to change the code, fix an issue, or implement a new feature please read our [CONTRIBUTING Guide](https://github.com/ZigRazor/CXXGraph/blob/master/CONTRIBUTING.md).

If you want to disscuss new feature or you have any question or suggestion about library please open a [Discussion](https://github.com/ZigRazor/CXXGraph/discussions) or simply chat on [![Join the chat at https://gitter.im/CXXGraph-Community/community](https://badges.gitter.im/CXXGraph-Community/community.svg)](https://gitter.im/CXXGraph-Community/community?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
If you want to discuss new features or you have any questions or suggestions about the library, please open a [Discussion](https://github.com/ZigRazor/CXXGraph/discussions) or simply chat on [![Join the chat at https://gitter.im/CXXGraph-Community/community](https://badges.gitter.im/CXXGraph-Community/community.svg)](https://gitter.im/CXXGraph-Community/community?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)

## Stars History

Expand All @@ -590,7 +591,7 @@ If you want to disscuss new feature or you have any question or suggestion about

## Contact

E-Mail : [email protected]
E-mail : [email protected]

[![Join the chat at https://gitter.im/CXXGraph-Community/community](https://badges.gitter.im/CXXGraph-Community/community.svg)](https://gitter.im/CXXGraph-Community/community?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)

Expand All @@ -600,9 +601,9 @@ E-Mail : [email protected]

## Support

To support me just add ***Star*** the project [![GitHub stars](https://img.shields.io/github/stars/ZigRazor/CXXGraph.svg?style=social&label=Star&maxAge=2592000)](https://GitHub.com/ZigRazor/CXXGraph/stargazers/) or ***follow me*** [![GitHub followers](https://img.shields.io/github/followers/ZigRazor.svg?style=social&label=Follow&maxAge=2592000)](https://github.com/ZigRazor?tab=followers)
To support me, add a ***Star*** to the project [![GitHub stars](https://img.shields.io/github/stars/ZigRazor/CXXGraph.svg?style=social&label=Star&maxAge=2592000)](https://GitHub.com/ZigRazor/CXXGraph/stargazers/) or ***follow me*** [![GitHub followers](https://img.shields.io/github/followers/ZigRazor.svg?style=social&label=Follow&maxAge=2592000)](https://github.com/ZigRazor?tab=followers)

To get updated ***watch*** the project [![GitHub watchers](https://img.shields.io/github/watchers/ZigRazor/CXXGraph.svg?style=social&label=Watch&maxAge=2592000)](https://GitHub.com/ZigRazor/CXXGraph/watchers/)
To stay updated, ***watch*** the project [![GitHub watchers](https://img.shields.io/github/watchers/ZigRazor/CXXGraph.svg?style=social&label=Watch&maxAge=2592000)](https://GitHub.com/ZigRazor/CXXGraph/watchers/)

## References

Expand All @@ -614,9 +615,9 @@ We are referenced by:

## Credits

Thanks to the community of [TheAlgorithms](https://github.com/TheAlgorithms) for some algorithms ispiration.
Thanks to the community of [TheAlgorithms](https://github.com/TheAlgorithms) for some algorithm inspiration.

Thanks to [GeeksForGeeks](https://www.geeksforgeeks.org/) for some algorithms inspiration.
Thanks to [GeeksForGeeks](https://www.geeksforgeeks.org/) for some algorithm inspiration.

## Contributors

Expand All @@ -626,16 +627,16 @@ Thank you to all the people who have already contributed to CXXGraph!

## Cite Us

If you use this software please follow the [CITATION](https://github.com/ZigRazor/CXXGraph/blob/master/CITATION) istruction.
If you use this software please follow the [CITATION](https://github.com/ZigRazor/CXXGraph/blob/master/CITATION) instructions.
Thank you!

## Hacktoberfest 2k21

We have been participated at Hacktoberfest 2021, thank you to all the contributors!
We participated at Hacktoberfest 2021. Thank you to all the contributors!

## Hacktoberfest 2k22

We have been participated at Hacktoberfest 2022, thank you to all the contributors!
We participated at Hacktoberfest 2022. Thank you to all the contributors!

## Other Details

Expand Down
Loading

0 comments on commit faa706d

Please sign in to comment.