# uLib [![DOI](https://zenodo.org/badge/36926725.svg)](https://zenodo.org/badge/latestdoi/36926725) base toolkit library CMT Cosmic Muon Tomography reconstruction, analysis and imaging software Developed by University of Padova and INFN Sezione di Padova Italy ## Build Instructions This project relies on `conan` (v2) for dependency management (Eigen3, Boost) and `cmake` for configuration. VTK is provided through the micromamba/conda-forge environment. ### Prerequisites This project requires a `conda` or `micromamba` environment containing the necessary global tools like **ROOT**, **VTK**, and **Conan** (v2). We provide a `condaenv.yml` file to quickly build this environment. #### Installing Micromamba (Optional) If you do not have `conda` installed, `micromamba` is a fast and lightweight alternative. You can install it on Linux via: ```bash "${SHELL}" <(curl -L micro.mamba.pm/install.sh) ``` #### Creating the Environment You can create and activate the environment using either `micromamba` or `conda`. **Using Micromamba:** ```bash micromamba env create -f condaenv.yml micromamba activate uLib ``` **Using Conda:** ```bash conda env create -f condaenv.yml conda activate uLib ``` ### Configure and Build #### Standard build (GCC + Ninja + ccache) The default conan profile uses **Ninja** as the generator and **ccache** for compiler caching, dramatically speeding up incremental rebuilds. 1. **Configure Conan profile (first time only):** ```bash conan profile detect ``` 2. **Install Conan dependencies:** ```bash conan install . --output-folder=build --build=missing ``` 3. **Configure with CMake:** ```bash cmake --preset conan-release ``` 4. **Build:** ```bash cmake --build build -j$(nproc) ``` #### LLVM/Clang build (clang + lld + ccache — fastest) A `fast` conan profile is provided that uses **clang**, **lld** (LLVM linker), and **ccache**. Install them into your environment first: ```bash micromamba install -n uLib -y clang clangxx lld -c conda-forge ``` Then build using the `fast` profile: ```bash conan install . --output-folder=build --build=missing --profile=fast cmake -B build -G Ninja \ -DCMAKE_TOOLCHAIN_FILE=build/conan_toolchain.cmake \ -DCMAKE_BUILD_TYPE=Release cmake --build build -j$(nproc) ``` The `fast` profile is defined at `~/.conan2/profiles/fast` and sets: - `CMAKE_C_COMPILER=clang` / `CMAKE_CXX_COMPILER=clang++` - `CMAKE_EXE_LINKER_FLAGS=-fuse-ld=lld` - `CMAKE_CXX_COMPILER_LAUNCHER=ccache` ### Make python package ```bash micromamba run -n uLib env USE_CUDA=ON poetry install ```