- CMakePresets.json: add 'fast' preset (clang+lld+ccache) - .gitignore: generalize build/ to build*/, add CMakeUserPresets.json - CMakeUserPresets.json: untrack (conan-generated, now gitignored) - src/Core/Archives.h: remove redundant 'using basic_xml_iarchive::load_override' in xml_iarchive; caused ambiguous overload with clang (diamond inheritance) - src/Core/Object.cpp: remove invalid explicit instantiations of non-template virtual Object::serialize (GCC extension, clang rejects) - README.md, CLAUDE.md: document GCC and LLVM/clang build workflows Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2.5 KiB
uLib
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:
"${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:
micromamba env create -f condaenv.yml
micromamba activate mutom
Using Conda:
conda env create -f condaenv.yml
conda activate mutom
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.
- Configure Conan profile (first time only):
conan profile detect
- Install Conan dependencies:
conan install . --output-folder=build --build=missing
- Configure with CMake:
cmake --preset conan-release
- Build:
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:
micromamba install -n mutom -y clang clangxx lld -c conda-forge
Then build using the fast profile:
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=lldCMAKE_CXX_COMPILER_LAUNCHER=ccache
Make python package
micromamba run -n mutom env USE_CUDA=ON poetry install