Skip to content

Commit d1feef0

Browse files
committed
Refresh stale end-user and build documentation
1 parent 88f23c7 commit d1feef0

9 files changed

Lines changed: 111 additions & 512 deletions

File tree

BUILDING-cmake.md

Lines changed: 19 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ Want to build it fast?
99
Required tools and dependencies:
1010

1111
- CMake 3.21 or higher.
12-
- A working toolchain, e.g. Visual Studio on Windows or the `build-essentials` package on Ubuntu Linux.
12+
- A working toolchain, e.g. Visual Studio on Windows or the `build-essential` package on Ubuntu Linux.
1313
- Main OpenGL libraries and development files.
1414

1515
To use the library in other projects, it is required to install it. Use `CMAKE_INSTALL_PREFIX` to specify the
@@ -27,7 +27,7 @@ cmake --build . --target install --config Release
2727
If the build succeeded, you should now have the projectM libraries and include files in the specified install dir.
2828

2929
To use the library in other CMake projects, simply point the build to your install dir by adding it
30-
to `CMAKE_PREFIX_PATH` and call `find_package(libprojectM)` in the other project's `CMakeLists.txt`.
30+
to `CMAKE_PREFIX_PATH` and call `find_package(projectM4)` in the other project's `CMakeLists.txt`.
3131

3232
If you use other build systems, you have to specify the include and library paths manually.
3333

@@ -75,12 +75,12 @@ cmake -G Xcode -S /path/to/source/dir -B /path/to/build/dir
7575

7676
If you develop on Windows, you will possibly use Visual Studio. While recent visual Studio versions have CMake support
7777
built-in, you can still pre-generate the solution and project files and open the `.sln` file from the build directory.
78-
CMake provides a separate generator for each Visual Studio release. For Visual Studio 2019 you would use
79-
the [`Visual Studio 16 2019`](https://cmake.org/cmake/help/latest/generator/Visual%20Studio%2016%202019.html) generator
78+
CMake provides a separate generator for each Visual Studio release. For Visual Studio 2022 you would use
79+
the [`Visual Studio 17 2022`](https://cmake.org/cmake/help/latest/generator/Visual%20Studio%2017%202022.html) generator
8080
and provide an additional architecture parameter:
8181

8282
```shell
83-
cmake -G "Visual Studio 16 2019" -A "X64" -S /path/to/source/dir -B /path/to/build/dir
83+
cmake -G "Visual Studio 17 2022" -A "X64" -S /path/to/source/dir -B /path/to/build/dir
8484
```
8585

8686
It is not possible to generate multi-arch solutions with CMake though. You need to create separate build directories and
@@ -102,9 +102,10 @@ using the `-D` switch.
102102
| CMake option | Default | Required dependencies | Description |
103103
|---------------------|---------|-----------------------|---------------------------------------------------------------------------------------------|
104104
| `BUILD_TESTING` | `OFF` | | Builds the unit tests. |
105+
| `BUILD_DOCS` | `OFF` | `Doxygen`, `Sphinx` | Builds the API/developer documentation in `docs/`. |
105106
| `BUILD_SHARED_LIBS` | `ON` | | Build projectM as shared libraries. If `OFF`, build static libraries. |
106107
| `ENABLE_PLAYLIST` | `ON` | | Builds and installs the playlist library. |
107-
| `ENABLE_EMSCRIPTEN` | `OFF` | `Emscripten` | Build for the web using Emscripten. Only supports build as a static library and using GLES. |
108+
| `ENABLE_EMSCRIPTEN` | (auto) | `Emscripten` | Forced `ON` when building with the Emscripten toolchain, otherwise `OFF`. Not user-settable. |
108109
| `ENABLE_GLES` | `OFF` | `GLES` | Use OpenGL ES 3 profile for rendering instead of the Core profile. |
109110

110111
Note that `ENABLE_GLES` will be forcibly set to `ON` for Emscripten and Android builds, making it mandatory.
@@ -114,14 +115,17 @@ Note that `ENABLE_GLES` will be forcibly set to `ON` for Emscripten and Android
114115
The following table contains a list of build options which are only useful in special circumstances, e.g. when
115116
developing libprojectM, trying experimental features or building the library for a special use-case/environment.
116117

117-
| CMake option | Default | Required dependencies | Description |
118-
|--------------------------|---------|--------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
119-
| `ENABLE_SDL_UI` | `ON` | `SDL2` | Builds the SDL-based test application. Only used for development testing, will not be installed. |
120-
| `ENABLE_INSTALL` | `OFF` | Building as a CMake subproject | Enable projectM install targets when built as a subproject via `add_subdirectory()`. |
121-
| `ENABLE_DEBUG_POSTFIX` | `ON` | | Adds `d` (by default) to the name of any binary file in debug builds. |
122-
| `ENABLE_SYSTEM_GLM` | `OFF` | | Builds against a system-installed GLM library. |
123-
| `ENABLE_CXX_INTERFACE` | `OFF` | | Exports symbols for the `ProjectM` and `PCM` C++ classes and installs the additional the headers. Using the C++ interface is not recommended and unsupported. |
124-
| `ENABLE_VERBOSE_LOGGING` | `OFF` | | Enables code for `TRACE` and `DEBUG` log levels in release builds. By default, these will only be compiled for `Debug` builds. Enabling this will negatively affect performance, even if the actual log level is set to `INFORMATION` or higher. |
118+
| CMake option | Default | Required dependencies | Description |
119+
|------------------------------|----------------------------------|--------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
120+
| `ENABLE_SDL_UI` | `OFF` | `SDL2` | Builds the SDL-based test application. Only used for development testing, will not be installed. |
121+
| `ENABLE_INSTALL` | `ON` (top-level) / `OFF` (subproject) | | Enable projectM install targets. Automatically `ON` when built standalone, `OFF` when added via `add_subdirectory()`. |
122+
| `ENABLE_DEBUG_POSTFIX` | `ON` | | Adds `d` (by default) to the name of any binary file in debug builds. |
123+
| `ENABLE_SYSTEM_GLM` | `OFF` | | Builds against a system-installed GLM library. |
124+
| `ENABLE_SYSTEM_PROJECTM_EVAL`| `ON` | | Uses a system-installed projectM-eval library if found, otherwise the bundled sources in `vendor/`. |
125+
| `ENABLE_BOOST_FILESYSTEM` | `OFF` | `Boost` | Forces the use of `boost::filesystem` instead of `std::filesystem`. Only needed on toolchains without C++17 filesystem support. |
126+
| `ENABLE_MACOS_FRAMEWORK` | `OFF` | macOS | Build as macOS Framework bundles instead of plain shared libraries. |
127+
| `ENABLE_CXX_INTERFACE` | `OFF` | | Exports symbols for the `ProjectM` and `PCM` C++ classes and installs the additional the headers. Using the C++ interface is not recommended and unsupported. |
128+
| `ENABLE_VERBOSE_LOGGING` | `OFF` | | Enables code for `TRACE` and `DEBUG` log levels in release builds. By default, these will only be compiled for `Debug` builds. Enabling this will negatively affect performance, even if the actual log level is set to `INFORMATION` or higher. |
125129

126130
### Path options
127131

@@ -236,7 +240,7 @@ Build targets - shared/static libraries and executables - are created in the sam
236240
the `CMakeLists.txt` file that defines the target in the source tree (which, in most cases, resides in the same
237241
directory as the source files). Depending on the generator used, the binaries are created directly in the directory for
238242
single-configuration generators (like `Unix Makefiles` or `Ninja`) and in a subdirectory with the configuration name,
239-
e.g. `Debug` or `Release`, for multi-configuration generators like `Xcode` or `Visual Studio 16 2019`.
243+
e.g. `Debug` or `Release`, for multi-configuration generators like `Xcode` or `Visual Studio 17 2022`.
240244

241245
You may also find additional files and symbolic links in the same location depending on the platform, e.g. `.pdb` files
242246
on Windows.

BUILDING.md

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,9 @@ Mandatory packages:
1717
sudo apt install build-essential cmake libgl1-mesa-dev mesa-common-dev
1818
```
1919

20-
**Important:** Depending on your distribution, the CMake package might be too old to build projectM, e.g. Debian 11 (
21-
bookworm) only provides CMake 3.18 while CMake 3.21 is required. In this case, get the latest CMake
20+
**Important:** projectM requires CMake 3.21 or newer. Current stable distributions already ship a new enough
21+
CMake (e.g. Debian 12 "bookworm" with CMake 3.25, Ubuntu 22.04 and newer with CMake 3.22+). Only end-of-life releases
22+
like Debian 11 "bullseye" (CMake 3.18) need a manual install, in which case get the latest CMake
2223
release [from Kitware's download page](https://cmake.org/download/).
2324

2425
Optional packages:
@@ -49,9 +50,6 @@ git submodule update
4950

5051
### Build and install projectM
5152

52-
Older projectM releases use autoconf/automake for building. If your repository has a `CMakeLists.txt` file on the top
53-
level, skip to the CMake part right below.
54-
5553
Replace `/usr/local` with your preferred installation prefix.
5654

5755
#### Configure the project using CMake
@@ -78,7 +76,9 @@ cmake --build . -- -j && sudo cmake --build . --target install
7876

7977
#### Test projectM
8078

81-
If you have a desktop environment installed, you can now run `[prefix]/bin/projectMSDL`.
79+
The SDL-based developer test UI is off by default. To build it, add `-DENABLE_SDL_UI=ON` to the configure command
80+
above (requires SDL2, e.g. `sudo apt install libsdl2-dev`). It is not installed; after building, run it from the build
81+
directory, e.g. `./src/sdl-test-ui/projectM-Test-UI`.
8282

8383
## Dependencies
8484

@@ -88,7 +88,7 @@ development files. To build projectM, both binaries and development files need t
8888
#### General build dependencies for all platforms:
8989

9090
* A working build toolchain (compiler, linker).
91-
* CMake 3.21 or highter.
91+
* CMake 3.21 or higher.
9292
* **OpenGL**: 3D graphics library. Used to render the visualizations.
9393
* **GLES3**: OpenGL libraries for embedded systems, version 3. Required to build projectM on mobile devices, Raspberry
9494
Pi and Emscripten.
@@ -284,7 +284,7 @@ libprojectM builds at least on the following platforms:
284284
- Windows
285285
- Linux
286286
- macOS (iOS/tvOS as well, but be aware that Apple's TOS may prevent its use in Store apps!)
287-
- BSD derivates
287+
- BSD derivatives
288288
- Android
289289
- WebGL/WASM (using emscripten)
290290

@@ -320,9 +320,10 @@ automatically (e.g. OpenGL libraries) and have to be added manually depending on
320320

321321
### Frontends and audio capturing
322322

323-
Previous projectM versions (before 4.0) came with several UIs and audio capture implementations. To reduce the size of
324-
the code base and separate the release cycles and development of the core library and the frontends, these have been
325-
removed from libprojectM and either being rewritten or moved into their own, separate Git repository.
323+
Previous projectM versions (before 4.0) shipped several UIs and audio capture implementations in this repository.
324+
To reduce the size of the code base and separate the release cycles of the core library and the frontends, these were
325+
moved into their own repositories under the [projectM-visualizer organization](https://github.com/projectM-visualizer)
326+
(e.g. the SDL-based desktop app and the Qt-based desktop app with PipeWire/PulseAudio/JACK backends).
326327

327328
libprojectM on its own does not have any means of capturing audio, it simply takes PCM data via the API. Applications
328329
using projectM can supply this data from their own audio sources, e.g. music playing in an audio player or capturing

EMSCRIPTEN.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ OpenGL ES, but not identical, so a few additional considerations apply to get pr
55

66
## Additional Build Settings
77

8-
A few additional build settings will be required when building an Emscripten wrapper. Pass these flags/parameterrs to
8+
A few additional build settings will be required when building an Emscripten wrapper. Pass these flags/parameters to
99
the Emscripten linker:
1010

1111
- `-sUSE_SDL=2`: It is highly recommended to use Emscripten's built-in SDL2 port to set up the rendering context. This
@@ -18,7 +18,7 @@ the Emscripten linker:
1818
## Initializing Emscripten's OpenGL Context
1919

2020
In addition to the above linker flags, some additional initialization steps must be performed to set up the OpenGL
21-
rendering context for projectM. Specifically, the `OES_texture_float` WenGL extension must be loaded explicitly to
21+
rendering context for projectM. Specifically, the `OES_texture_float` WebGL extension must be loaded explicitly to
2222
support the required texture format for the motion vector grid. The following code template can be used to set up a
2323
proper SDL2/WebGL context for projectM:
2424

README.md

Lines changed: 12 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -29,23 +29,20 @@ source-code and binary releases of the projectM development libraries and header
2929

3030
### End-User Applications
3131

32-
**Important**: projectM is currently undergoing heavy development, so the available end-user frontends are either
33-
outdated or unavailable. We've released a few development previews, which are not feature-complete and may have bugs. As
34-
soon as we've finished the current modernization of libprojectM, we'll release new and tested versions of most of the
35-
frontends listed below, while we may remove or replace some of those which are no longer maintained by their original
36-
developers.
32+
**Important**: projectM is currently undergoing heavy development. The available end-user frontends are
33+
development previews, which are not feature-complete and may have bugs.
3734

3835
#### Windows
3936

40-
- Standalone (currently only available as
41-
a [development preview](https://github.com/kblaschke/frontend-sdl2/releases/tag/2.0-windows-pre3))
37+
- Standalone ([projectMSDL 2.0 pre-release](https://github.com/projectM-visualizer/frontend-sdl-cpp/releases))
4238
- [Steam](https://store.steampowered.com/app/1358800/projectM_Music_Visualizer/) (Same as standalone development
4339
preview)
40+
- [Windows Store](https://www.microsoft.com/store/apps/9NDCVH0VCWJN) (Old 3.1.12 release)
4441

4542
#### macOS
4643

4744
- Standalone
48-
- [C++ app development preview](https://github.com/kblaschke/frontend-sdl2/releases/tag/2.0-macos-pre1)
45+
- [C++ app pre-release](https://github.com/projectM-visualizer/frontend-sdl-cpp/releases)
4946
- [Rust app development preview (signed)](https://github.com/projectM-visualizer/frontend-sdl-rust/releases/tag/v0.1.0)
5047
- [Steam](https://store.steampowered.com/app/1358800/projectM_Music_Visualizer/) (Old 3.1.12 release)
5148
- Music.app Plugin (currently only available as an
@@ -54,9 +51,8 @@ developers.
5451

5552
#### Linux
5653

57-
- Standalone (currently only available as
58-
a [development preview](https://github.com/kblaschke/frontend-sdl2/releases/tag/2.0-linux-pre2) for Ubuntu 22.04 and
59-
compatible distributions)
54+
- Standalone ([projectMSDL 2.0 pre-release](https://github.com/projectM-visualizer/frontend-sdl-cpp/releases), also
55+
available as `.deb` and `.tar.gz`)
6056
- [Steam](https://store.steampowered.com/app/1358800/projectM_Music_Visualizer/) (Same as standalone development
6157
preview)
6258

@@ -81,9 +77,9 @@ Source code and other resources, mostly aimed at developers.
8177

8278
- [Library source code](https://github.com/projectM-visualizer/projectm/) (this repository)
8379
- [GStreamer plugin](https://github.com/projectM-visualizer/gst-projectm/)
84-
- [Qt5](https://www.qt.io/) based [PulseAudio](https://www.freedesktop.org/wiki/Software/PulseAudio/) and JACK desktop
85-
apps [as source code for Linux](https://github.com/projectM-visualizer/frontend-qt), currently broken and needs some
86-
updating (help wanted!).
80+
- [Qt](https://www.qt.io/) based (Qt5/Qt6) desktop apps for Linux with
81+
[PipeWire](https://pipewire.org/), [PulseAudio](https://www.freedesktop.org/wiki/Software/PulseAudio/) and JACK audio
82+
backends ([source code](https://github.com/projectM-visualizer/frontend-qt), requires libprojectM 4.x).
8783
- [ALSA, XMMS, Winamp, JACK](https://sourceforge.net/projects/projectm/files/) (legacy 2.x sources for historic
8884
purposes, unmaintained since 2012)
8985

@@ -226,8 +222,8 @@ If you maintain packages of libprojectM, we are happy to work with you! Please n
226222
- Many of the frontend applications are likely outdated and of less utility than the core library. If you desire to use
227223
them or depend on them, please file an issue in the respective repository so we can help update them.
228224
- The "canonical" application for actually viewing the visualizations is
229-
now [projectM-SDL](https://github.com/projectM-visualizer/frontend-sdl2), based on libSDL2 because it supports audio
230-
input and is completely cross-platform.
225+
now [projectMSDL](https://github.com/projectM-visualizer/frontend-sdl-cpp), based on libSDL2 because it supports
226+
audio input and is completely cross-platform.
231227
- If you like Rust, there is a [SDL3 rust frontend](https://github.com/projectM-visualizer/frontend-sdl-rust) in the works looking for contributors.
232228
- This is an open source project! If you don't like something, feel free to contribute improvements!
233229
- Yes, you are looking at the official version. This is not a fork.

0 commit comments

Comments
 (0)