Skip to content

bow-simulation/virtualbow

Repository files navigation

VirtualBow

Build Status

VirtualBow is a free, open-source software tool for designing and simulating bows. Visit http://www.virtualbow.org for more information about the project.

Building

Building VirtualBow requires CMake, a C++17 compiler and the following external dependencies:

Also used are QCustomPlot and Calculate, but those are already included in the source code. The version numbers are just the minimum needed, newer versions might work too.

Optional pre-built dependencies for the supported platforms and compilers are available at virtualbow-dependencies. They each contain a file named paths.cmake that will set up the CMAKE_PREFIX_PATH so that the libraries are found by CMake. The easiest way to use it is by setting CMAKE_TOOLCHAIN_FILE to paths.cmake in your build,

-DCMAKE_TOOLCHAIN_FILE=[dependencies]/paths.cmake

If you're using Qt Creator you can set this property under Projects - Build Settings - CMake. (If the configuration step keeps failing, try Build - Clear CMake Configuration and then run CMake again via Build - Run CMake.)

Below are some brief instructions for building on the supported platforms. When in doubt, see the CI build definitions of virtualbow and virtualbow-dependencies for the definitive source of truth.

Windows

Using the GCC compiler and tools provided by MinGW-w64,

mkdir build && cd build
cmake ../virtualbow -G "MinGW Makefiles" -DCMAKE_TOOLCHAIN_FILE=[...]/paths.cmake -DCMAKE_BUILD_TYPE=Release
cmake --build .

Building with Microsoft Visual C++ should also be possible, but it is not officially supported or tested. Contributions that fix issues with MSVC will be accepted.

Linux and MacOS

On Linux, the Qt libraries packaged with the system are used. On Ubuntu they can be installed with

sudo apt install qtbase5-dev

The rest of the build process is the same on Linux and MacOS

mkdir build && cd build
cmake ../virtualbow -DCMAKE_TOOLCHAIN_FILE=[...]/paths.cmake -DCMAKE_BUILD_TYPE=Release
cmake --build .

Contributing

Contributions of any kind are very welcome!

The development of VirtualBow is discussed and planned publicly on our issue tracker and the discussions. Feel free to participate by either commenting on existing topics or opening your own ones for feedback, new ideas, feature requests or bug reports. If you plan a larger contribution, consider discussing it with us first to make sure that it fits the scope and vision of the project.

For actually contributing to this repository please follow these steps:

  1. Fork the repository and create a new branch for your changes from the latest develop branch. The branching strategy used in this repository is called Git Flow in case you want to learn more about it.

  2. Implement and test your changes and add unit tests and/or documentation for your new code if applicable. The code style used in VirtualBow is not explicitly specified anywhere and not 100% consistent either. Just try to match the style of the existing/surrounding code reasonably well.

  3. Create a pull request against the develop branch of this repository. Write a short summary of your changes and include any other relevant information like e.g. links to related issues or discussions.

  4. Wait and see if the build pipeline passes. This automatic process ensures that the project still compiles successfully and all tests work as expected. Don't worry if this step fails initially, you can keep updating your branch with new commits until all checks have passed.

  5. Sign the Contributor License Agreement. If this is your first contribution to VirtualBow, you will be asked to sign our Contributor License Agreement (CLA). This document clarifies the rights to your contribution and ensures that we can use your contribution(s) for our purposes. Our CLA is adapted from the Apache Individual Contributor License Agreement with only minor changes, so it is a fairly standard license agreement.

  6. You are almost done! Your changes will now be reviewed for merging as soon as possible.

License

VirtualBow is released under the GNU General Public License v3.0.