Update to build instructions for sc3-plugins

Hey all,

If you built sc3-plugins on Linux recently from source and used the instructions in the README, you probably have an unoptimized build which will have very bad performance compared to a release build.

On GitHub it was pointed out by RedFrik that the build instructions for sc3-plugins were not quite right previously. Before they said this:

mkdir build && cd build
cmake -DSC_PATH=/path/to/sc/ ..
cmake --build . --config Release
# to install the plugins
cmake --build . --config Release --target install

now they say this:

mkdir build && cd build
# for both scsynth and supernova plugins; omit -DSUPERNOVA=ON to build only scsynth plugins
cmake -DSC_PATH=/path/to/sc/ -DCMAKE_BUILD_TYPE=Release -DSUPERNOVA=ON ..
cmake --build . --config Release
# to install the plugins
cmake --build . --config Release --target install

This mainly affects people on Linux; on Windows and macOS, using the VS and Xcode generators, it works correctly. There is no way I’m aware of to check if a plugin is unoptimized or release.

Apologies for the inconvenience.

For more detail – CMake is typically called a build system but it’s more of a build system generator. It generates files for other build systems like Make or Ninja or Xcodebuild to use. Some build systems support multiple configurations (here a configuration means Debug, Release, etc.), others do not. These are known as single-config and multi-config generators. Which generator is chosen depends on your system and environment. On macOS, typically it is Xcode; Windows, MSVC; Linux, “Unix Makefiles”. The first two are multi-config, the last is single-config. For multi-config generators, you specify the build type you want during the build step (cmake --build . --config Release). For single-config generators, you do it during the configure step (cmake -DCMAKE_BUILD_TYPE=Release ..). CMake doesn’t complain when you do both, so an easy way to make sure the right type is always chosen is to always do both regardless of your generator. This is what the fixed build instructions do.

-Brian

1 Like

Thank you so much for this update!
B

1 Like