Overview
Version set files define collections of third-party library versions that are known to work well together. Each file specifies exact versions for all dependencies in the build system.File Naming Convention
version-set-9.0.conf- VTK 9.0.xversion-set-8.8.conf- VTK 8.8.x (also includes VTK 9.0.1)version-set-7.3.46.conf- VTK 8.2.x (named after Miele version)version-set-7.1.38.conf- VTK 7.1.x (named after Miele version)
Earlier version sets are named after the Miele-LXIV version rather than VTK version.
File Location
Version set files are:- Stored: In the build-steps directory alongside build scripts
- Referenced: In
seed.confvia theCONFIG_VERSION_SETvariable - Sourced: By
build.shduring the build process
Configuration in seed.conf
seed.conf
seed.sh interactive menu.
Version Set Variables
Each version set file defines the following variables:Build Configuration
C++ standard to use (e.g.,
gnu++17, gnu++14)macOS deployment target (e.g.,
10.9, 10.13). If not set, auto-detected.Additional compiler flags to pass to all packages
DCMTK Configuration
DCMTK major version number
DCMTK minor version number
DCMTK patch/build version number
Full DCMTK version (constructed from major.minor.build)
CMake options for DCMTK configuration
C++ preprocessor flags for DCMTK (e.g.,
FOR_MIELE_LXIV)VTK Configuration
VTK major version number
VTK minor version number
VTK patch/build version number
Full VTK version (constructed from major.minor.build)
CMake options for VTK configuration
ITK Configuration
ITK major version number
ITK minor version number
ITK patch/build version number
Full ITK version (constructed from major.minor.build)
Supporting Libraries
libiconv version (e.g.,
1.15)libxml2 version (e.g.,
2.9.13)zlib version (e.g.,
1.3.1)OpenSSL version (e.g.,
1.1.1d)libpng version (e.g.,
1.6.37)libjpeg version (e.g.,
9d)libtiff version (e.g.,
4.0.10)Image Format Libraries
OpenJPEG major version number
OpenJPEG minor version number
OpenJPEG patch/build version number
Full OpenJPEG version (constructed from major.minor.build)
OpenJPEG tarball version tag (e.g.,
v2.3.1)Jasper version (e.g.,
2.0.32)Graphics Libraries
GLEW version (e.g.,
2.1.0)CMake options for GLEW configuration
GLM version (e.g.,
0.9.8.5)Application Version
Miele-LXIV application version to build (e.g.,
8.4.62)Example Version Sets
Version Compatibility
VTK 9.x Series (version-set-8.8.conf)
- VTK: 9.0.1
- ITK: 5.1.1
- DCMTK: 3.6.5
- OpenSSL: 1.1.1d
- C++ Standard: gnu++17
- Target: Latest macOS (auto-detected)
VTK 8.x Series (version-set-7.3.46.conf)
- VTK: 8.2.0
- ITK: 4.13.2
- DCMTK: 3.6.4
- OpenSSL: 1.1.0j
- C++ Standard: gnu++14
- Target: macOS 10.9+
VTK 7.x Series (version-set-7.1.38.conf)
- VTK: 7.1.1
- ITK: 4.11.1
- DCMTK: 3.6.2
- OpenSSL: 1.1.0f (disabled)
- C++ Standard: gnu++14
- Target: macOS 10.9+
The 7.1.38 version set builds DCMTK without OpenSSL and iconv support.
Creating a New Version Set
To create a custom version set:1. Copy Existing Version Set
2. Update Version Numbers
Modify the version variables for the packages you want to change:3. Adjust Build Options
Modify CMake options if needed:4. Update seed.conf
Editseed.conf or re-run seed.sh to select your new version set:
5. Test the Build
Run the build and verify all packages compile successfully:Version Variables Usage
The build script constructs package names from version variables:build.sh:42-56
build.sh:65-79
Special Version Variables
DCMTK Page Variable
build.sh:124-125
build.sh:526
OpenJPEG Tar Variable
v prefix:
build.sh:637
XML2 Version Variable
build.sh:55
v prefix in version 2.9.13.
Best Practices
Version Selection
- Use tested combinations - Start with an existing version set
- Update incrementally - Change one package at a time
- Test thoroughly - Build and run the application
- Document changes - Add comments explaining version choices
Compatibility Notes
- VTK/ITK compatibility - ITK must support your VTK version
- DCMTK/OpenSSL - Ensure OpenSSL version is compatible
- C++ standard - All packages must support the same standard
- macOS version - Deployment target must match system capabilities
Maintenance
- Keep version sets - Don’t delete old sets; they’re small files
- Name clearly - Use descriptive names
- Add comments - Document release dates and compatibility
Troubleshooting
Version Not Found
If a version doesn’t exist:- Check package release pages
- Try nearby versions (e.g., 2.0.32 instead of 2.0.31)
- Update download URLs if needed
Incompatible Versions
If packages don’t work together:- Check package release notes
- Look for version compatibility matrices
- Try versions from a working set
Build Failures
If compilation fails:- Check compiler flags (
MINUS_STD) - Verify deployment target
- Review CMake options
- Check for missing dependencies
See Also
- build.sh Reference - How versions are used
- seed.conf Reference - How to select version sets
- Kconfig Configuration - Configuration file format