Feature/CMake (#1443)

General CMake cleanup/overhaul
* Enable precompiled headers for all projects
* Move specifications itto separate CMakeLists files
  * Add openspace-core as a subdirectory
  * Move handle_modules functionality into modules/CMakeLists.txt
  * Move handleapplications logic into apps/CMakeLists.txt
* Introduce openspace-module-collection interface library to simplify inclusion of modules in applications
* Turn module initialization into a two-step process to adapt to the new minimal dependency scenario
* Compile time speedup
  * Remove circular dependencies between modules and core preventing multithreaded compilation on MSVC
  * Build Spice multithreaded and as static library
  * Remove dependency from core to module-webbrowser
  * Remove unused dependency from kameleon
  * Remove additional unnecessary dependencies
  * Cleanup volume/kameleon/kameleonvolume modules
  * Fix visibility issues. Restrict include paths
  * Compile kameleon in parallel
* Other cleanup
  * Only copy CEF files from one target (hard-coded to OpenSpace right now)
  * Remove unused instrumentation code
  * Remove the ability to render AABB for globes as it caused a circular dependency between GlobeBrowsing and Debugging
  * Removing compiler and cppcheck warnings
  * Turn almost all includes into non-system includes
  * Don't warn on deprecrated copy
* Updated submodules
This commit is contained in:
Alexander Bock
2020-12-28 18:26:57 +01:00
committed by GitHub
parent feb3078641
commit ad8af3ffeb
181 changed files with 2250 additions and 2540 deletions

View File

@@ -45,14 +45,22 @@ void ModuleEngine::initialize(
{
ZoneScoped
for (OpenSpaceModule* m : AllModules()) {
std::vector<OpenSpaceModule*> modules = AllModules();
for (OpenSpaceModule* m : modules) {
registerModule(std::unique_ptr<OpenSpaceModule>(m));
}
for (OpenSpaceModule* m : modules) {
const std::string& identifier = m->identifier();
auto it = moduleConfigurations.find(identifier);
ghoul::Dictionary configuration;
if (it != moduleConfigurations.end()) {
configuration = it->second;
}
registerModule(std::unique_ptr<OpenSpaceModule>(m), configuration);
m->initialize(configuration);
addPropertySubOwner(m);
}
}
@@ -99,9 +107,7 @@ void ModuleEngine::deinitializeGL() {
LDEBUG("Finished deinitializing OpenGL of modules");
}
void ModuleEngine::registerModule(std::unique_ptr<OpenSpaceModule> mod,
const ghoul::Dictionary& configuration)
{
void ModuleEngine::registerModule(std::unique_ptr<OpenSpaceModule> mod) {
ZoneScoped
ghoul_assert(mod, "Module must not be nullptr");
@@ -121,8 +127,6 @@ void ModuleEngine::registerModule(std::unique_ptr<OpenSpaceModule> mod,
}
LDEBUG(fmt::format("Registering module '{}'", mod->identifier()));
mod->initialize(this, configuration);
addPropertySubOwner(mod.get());
LDEBUG(fmt::format("Registered module '{}'", mod->identifier()));
_modules.push_back(std::move(mod));
}