Appendix B — Building on Linux

Tested on Debian/Ubuntu-style distros; adapt package names for your distro.

1. Dependencies

sudo apt install build-essential cmake ninja-build pkg-config \
                 qt6-base-dev qt6-image-formats-plugins \
                 libcfitsio-dev libccfits-dev zlib1g-dev liblz4-dev \
                 libzstd-dev libpugixml-dev

That covers Qt6, CFITSIO, and CCfits. libXISF is not packaged — build it next. (JPEG/PNG plugins come with qt6-base-dev, but TIFF and WebP live in qt6-image-formats-plugins — without it, TIFF export and the TIFF/WebP readers silently disappear.)

2. Build and install libXISF

git clone https://gitea.nouspiro.space/nou/libXISF
cd libXISF
cmake -B build -DCMAKE_INSTALL_PREFIX=/usr/local
cmake --build build
sudo cmake --install build
sudo ldconfig            # refresh the shared-library cache
cd ..

Installs /usr/local/lib/libXISF.so and /usr/local/include/libxisf.h.

3. Configure and build NebulaScope

From the repository root:

cmake -B build -G Ninja
cmake --build build
./build/src/nebulascope                  # empty session
./build/src/nebulascope *.fits           # open a set
./build/src/nebulascope --list set.txt   # reload a saved list
./build/src/nebulascope --help

CFITSIO is found via pkg-config; CCfits and libXISF via find_library. If Qt6 is in a non-standard location, add -DCMAKE_PREFIX_PATH=/path/to/qt6.

At configure time you should see:

-- CFITSIO link: <paths to libcfitsio>
-- libXISF: /usr/local/lib/libXISF.so  (headers: /usr/local/include)

Troubleshooting

libXISF.so: cannot open shared object file at runtime — the loader can’t find it. Run sudo ldconfig, or set LD_LIBRARY_PATH=/usr/local/lib.

Undefined symbols for lz4 / zlib / pugixml at link — your libXISF is static. Uncomment the find_library lines in the top-level CMakeLists.txt and the matching entry in src/CMakeLists.txt.

Qt6 not found — install qt6-base-dev (Debian/Ubuntu) or the equivalent, or point -DCMAKE_PREFIX_PATH at your Qt install.