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:
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.
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.
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
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# Change QPM cache location (useful for dev drives)
qpm config cache path
# Set up NDK
qpm ndk resolve -d # Auto-downloads and configures NDK
# 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
QPM locates the NDK using (in priority order):
ndkpath.txt
fileANDROID_NDK_HOME
or ANDROID_NDK_LATEST_HOME
)# Set custom NDK path
qpm config ndk-path
# Use existing NDK (e.g., from Android Studio)
qpm config ndk-path
Specify NDK requirements in qpm.json
:
"workspace": {
"ndk": "^26.0.0"
}
QPM generates these files during dependency resolution:
extern.cmake
: Configures dependenciesqpm_defines.cmake
: Sets up NDK paths and build variablesInclude in your CMakeLists.txt:
include(${CMAKE_CURRENT_LIST_DIR}/qpm_defines.cmake)
include(${CMAKE_CURRENT_LIST_DIR}/extern.cmake)
If NDK paths aren't working:
qpm doctor
to check configurationqpm ndk list
to verify installed NDKsqpm ndk resolve -d
to automatically fix issuesFor 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