Quest Package Manager QuestPackageManager
winget install --id=QuestPackageManager.QuestPackageManager -e
Quest Package Manager (QPM) is a command-line tool for managing and creating Quest mod projects. It functions as a package manager specifically designed for these projects, simplifying the process of handling mods and their dependencies.
Quest Package Manager (QPM) is a command-line tool designed to simplify the management and creation of Quest mod projects. It acts as a package manager tailored for these projects, streamlining the handling of mods and their dependencies.
Key Features:
- Package Management: Efficiently manages mod dependencies and automates installation processes.
- Script System: Offers a script system similar to NPM, enabling users to configure workspaces and automate tasks.
- NDK and Tool Downloading: Downloads and manages NDK installations, as well as sets up CMake and Ninja for development environments.
- Doctor Check: Provides a diagnostic tool to ensure all project requirements are met and the environment is properly configured.
- Local Cache Support: Leverages a local cache for faster restores and offline usage capabilities.
- Functional Design Patterns: Built with functional patterns, immutability, and declarative code style for improved reliability and consistency.
- Error Handling: Robust error handling ensures better user experience and project stability.
Audience & Benefit: Ideal for developers and modders working on Quest projects, QPM enables streamlined workflows, efficient dependency management, and consistent build environments. It saves time by automating repetitive tasks and ensuring all necessary tools are properly configured. The tool's modular design and strong error handling make it a reliable choice for both small-scale and large-scale mod development.
QPM can be installed via winget, making it easy to integrate into your development workflow.
README
QPM (Quest Package Manager)
QPM is a package manager designed specifically for Quest/Beat Saber mods development. It streamlines the process of creating, sharing, and including dependencies in C++ projects.
Core Features
-
Package Creation & Management: Create packages and manage dependencies between mods
-
Version Control: Handle package versions and their dependencies
-
Build Integration: Seamlessly integrate with build systems
-
NDK Management: Download and configure Android NDK for Quest development
-
qpm version update
Updates qpm to a newer version -
qpm s/scripts build
Script system similar to NPM for configuring workspaces -
qpm ndk download/list/available
NDK management tooling -
qpm download cmake/ninja
Simplified build tool setup -
qpm doctor
Configuration diagnostics -
qpm templatr
Built-in templating
Improvements over Qpm v1
qpm version update
Updates qpm to a newer versionqpm s/scripts build
Script system similar to NPM for configuring workspacesqpm ndk download/list/available
NDK management toolingqpm download cmake/ninja
Simplified build tool setupqpm doctor
Configuration diagnosticsqpm templatr
Built-in templating
Quick Setup Commands
# Change QPM cache location (useful for dev drives)
qpm config cache path
# Set up NDK
qpm ndk resolve -d # Auto-downloads and configures NDK
NDK Management
Essential NDK Commands
# Check NDK configuration
qpm doctor
# List available NDK versions
qpm ndk available
# Download specific NDK version
qpm ndk download 26
# Pin project to NDK version
qpm ndk pin 26 --online
# List installed NDKs
qpm ndk list
# Auto-resolve NDK requirements
qpm ndk resolve -d # -d flag downloads if needed
NDK Path Configuration
QPM locates the NDK using (in priority order):
- Project's
ndkpath.txt
file - Environment variables (
ANDROID_NDK_HOME
orANDROID_NDK_LATEST_HOME
)
# Set custom NDK path
qpm config ndk-path
# Use existing NDK (e.g., from Android Studio)
qpm config ndk-path
NDK Project Configuration
Specify NDK requirements in qpm.json
:
"workspace": {
"ndk": "^26.0.0"
}
Generated CMake Files
QPM generates these files during dependency resolution:
extern.cmake
: Configures dependenciesqpm_defines.cmake
: Sets up NDK paths and build variables
Include in your CMakeLists.txt:
include(${CMAKE_CURRENT_LIST_DIR}/qpm_defines.cmake)
include(${CMAKE_CURRENT_LIST_DIR}/extern.cmake)
Troubleshooting NDK Issues
If NDK paths aren't working:
- Run
qpm doctor
to check configuration - Use
qpm ndk list
to verify installed NDKs - Run
qpm ndk resolve -d
to automatically fix issues
CI/CD Integration
For CI environments:
# Option 1: Set environment variable
env:
ANDROID_NDK_HOME: /path/to/android-ndk
# Option 2: Automate setup in workflow
- name: Setup NDK
run: qpm ndk resolve -d