-
Couldn't load subscription status.
- Fork 150
Installation
Boost.uBlas is a header only library. You only need to include the right headers and take care of the dependencies.
Make sure you have a C++ compiler that supports C++17 (master) and C++20 (develop)
g++ --version
# g++ (Ubuntu 10.3.0-1ubuntu1~20.04) 10.3.0
or
clang++ --version
# Ubuntu clang version 11.0.0-2~ubuntu20.04.1
For Mac user, the only toolset is clang. Installing gcc with Homebrew is not recommended.
pple clang version 12.0.5 (clang-1205.0.22.11)
Target: x86_64-apple-darwin20.6.0
Thread model: posix
InstalledDir: /Library/Developer/CommandLineTools/usr/bin
uBlas can be compiled without the boost super project
Clone the uBlas project
git clone [email protected]:boostorg/ublas.git
cd ublasSwitch to the master branch
git checkout master # develop or any other feature branchMake sure you have installed boost library
Try out an example(the following examples are available under develop branch):
cd examples/tensor
g++ -std=c++20 simple_expressions.cpp -I../../include -o simple_expressions
g++ -std=c++20 instantiate_tensor.cpp -I../../include -o instantiate_tensorClone the Boost super-project
git clone --recursive --jobs 8 https://github.com/boostorg/boost.gitSwitch the Boost super-project to desired branch, master or develop
cd boost
git checkout masterTIP: Modular Boost Library Maintenance
guide, for more realistic test environment, recommends to develop and test
individual Boost library against other Boost libraries as defined by
the Boost super-project master branch:
cd boost
git checkout master
git pull
git submodule update --init --recursive --jobs 8Build the b2 driver program for Boost.Build engine.
./bootstrap.sh
./b2 --versionTIP: For more convenient path-less invocation, you can copy the b2
program to a location in your PATH.
Optionally, create full content of /boost virtual directory with
all Boost headers linked from the individual modular Boost libraries.
If you skip this step, executing b2 to run tests will automatically
create the directory with all headers required by Boost.uBLAS and tests.
./b2 -j8 headersRegardless if you decide to develop again master (recommended) or develop branch of the Boost super-project, you should always base your contributions (i.e. topic branches) on Boost.uBLAS develop branch. Go to the Boost.uBLAS library submodule.
cd libs/numeric/ublasCheckout the develop branch and bring it up to date
git checkout develop
git branch -vv
git pull origin developThe b2 invocation explains available options like toolset, variant and others. Execute b2 to run all tests built using default variant=debug and default toolset determined for your development environment. We also use the latest cxxstd=20 for Boost.uBLAS.
b2 is similar to cmake or qmake which is used to build ublas. Refer Documentation for more information.
Build examples of Boost.uBLAS assuming that you are in the boost folder.
cd libs/numeric/ublas
../../../b2 -j8 release toolset=clang cxxstd=20 examples/tensorBuild tests of Boost.uBLAS assuming that you are in the boost folder.
cd libs/numeric/ublas
../../../b2 -j8 release toolset=clang cxxstd=20 test/tensorFor macbook user, just in the there are errors during the build.
cd libs/numeric/ublas
echo "using clang : : clang++ : <cxxflags>"-std=c++20" <linkflags>"-lboost_unit_test_framework" ;" >> ~/user-config.jam
../../../b2 -j8 test/tensorTIP: If something goes wrong, you end up with incomplete or accidentally modified files in your clone of the super-project repository, or you simply wish to start fresh, then you can clean and reset the whole repository and its modules:
git clean -xfd
git submodule foreach --recursive git clean -xfd
git reset --hard
git submodule foreach --recursive git reset --hard
git submodule update --init --recursive --jobs 8For running the tests and compiling ublas on your local machine, refer this according to the operating system you have.