Tooling
This page introduces some basic tools which may be new to users who have not worked with C/C++. Users that are already comfortable with a C/C++ toolchain can skip this page.
Source Control
A source control tool is like Google Documents, but for source code. It allows developers to track changes that have been made to a project, and easily collaborate by sharing patches. Currently, the industry standard tool for this purpose is Git. Just like Google drive provides a platform for hosting sharing and collaborating on Google documents, GitHub is a platform where developers can host, share and collaborate on software projects.
The OpenSees project follows a forking workflow for accepting contributions. The following resources explain more on this matter.
- For a brief outline on forking we suggest the Atlassians forking workflow page.
- For a brief introduction to using your new FORK we suggest the Atlassians saving changes.
- For those interested in programming, you might as well become proficient using git so the link to all of Atlassians git tutorial will make help.
Compiler tool-chain ------------------
A compiler tool-chain is the collection of programs that work together to build a final executable program. This includes the actual compiler, a linker, and various other utilities. These programs are typically bundled together and installed collectively in a single step. Different operating systems generally favor a particular tool-chain, but the differences between these can generally be hidden by a build automation tool like CMake.
Building OpenSees requires both a C/C++ and a Fortran compiler. Some suggested compilers for various platforms are listed in table-summary
Package management
APT (Ubuntu, Debian Linux)
Dependency | Package |
---|---|
LAPACK | liblapack-dev |
BLAS | libblas-dev |
SuiteSparse | suitesparse-dev |
SuperLU | superlu-dev |
MySQL* | libmysqlclient-dev |
Tcl* | tcl-dev |
Pacman (Arch, Manjaro Linux)
The Pacman package manager
Dependency | Package |
---|---|
LAPACK | lapack |
BLAS | blas |
SuiteSparse | suitesparse |
SuperLU | superlu |
MySQL* | mariadb |
Tcl* | tcl |
Anaconda (Mac, Windows, Linux)
Dependency | Package | Channel |
---|---|---|
LAPACK | lapack |
|
BLAS | blas |
|
SuperLU | superlu |
|
SuiteSparse | suitesparse |
|
MySQL* | mysql |
conda-forge |
Command line environments
This section is under development
Summary
The following table gives a brief rundown of the most common configurations for various operating systems.
|
|
|
|
Source control | GitHub Desktop | GitHub Desktop | Git |
Build automation | CMake | CMake | CMake |
Compiler | C++ | Visual Studio 2019 | Clang | GCC |
|
Intel-Fortr an | GFortran | GFortran |
Package management | Homebrew | system |