ParaView/Extending ParaView at Compile Time

Before ParaView 3.12

In ParaView versions before 3.12, it was possible to bring in arbitrary code to extend the ParaView capabilities at compile time by setting EXTERNAL_MODULES to point to additional source directories. These sources included CMakeLists.txt files that used
PARAVIEW_INCLUDE_SERVERMANAGER_RESOURCES, PARAVIEW_INCLUDE_SOURCES, PARAVIEW_INCLUDE_GUI_RESOURCES, PARAVIEW_INCLUDE_WRAPPED_SOURCES macros to build additional components.
These made is possible to change ParaView build arbitrarily without any mechanism to catch issues with client and server don't match up. Hence, this has been deprecated with ParaView 3.12. If you want to use this mechanism for ParaView versions earlier than 3.12, refer to the history of this document [1].

ParaView 3.12 Onwards

Starting with ParaView 3.12, the ability to add arbitrary code to be included using EXTERNAL_MODULES has been deprecated. Instead one can point to directories containing additional plugins using EXTRA_EXTERNAL_PLUGIN_DIRS variable. Developers can then build standard plugins that will be included with the ParaView build. Since the custom code is encapsulated in plugins, it's possible to detect client-server mismatches and other conflicts/issues arising from such additions. Refer to ParaView Plugins - How To for requirements imposed on the source files within these plugin directories.