Dear all,
I’m having a small issue when trying to compile a ROOT code containing TEveManager.
The code runs fine with “root test.C”, but due to the amount of data to process and plot, I’m trying to compile it with
g++ -o test test.C `root-config --cflags --libs`
and I get the following errors in regard to TEveManager even including the library in the code:
test.C:(.text+0xd8f): undefined reference to `TEveManager::Create(bool, char const*)'
The following is a minimally reproducible example:
#include <iostream>
#include "TF3.h"
#include "TKey.h"
#include "TMath.h"
#include "TFile.h"
#include "TGaxis.h"
#include "TGraph.h"
#include "TStyle.h"
#include "TString.h"
#include "TCanvas.h"
#include "TFolder.h"
#include "TGraph2D.h"
#include "TEveLine.h"
#include "TEvePlot3D.h"
#include "TGeoSphere.h"
#include "TEveViewer.h"
#include "TEveBrowser.h"
#include "TEveManager.h"
#include "TEveGeoShape.h"
#include "TEveCompound.h"
#include "TApplication.h"
#include "TGFileBrowser.h"
#include "TEveProjectionManager.h"
TGFileBrowser *gBrowser = 0;
void test(){
auto gEve = TEveManager::Create();
gEve->GetBrowser()->StartEmbedding(0);
gBrowser = gEve->GetBrowser()->MakeFileBrowser();
gEve->GetBrowser()->StopEmbedding("Invariants");
auto sphere = new TEveGeoShape("sphere");
sphere->SetShape(new TGeoSphere(0., 1));
auto cmp = new TEveCompound;
cmp->OpenCompound();
cmp->AddElement(sphere);
cmp->CloseCompound();
gEve->AddElement(cmp);
gEve->Redraw3D(kTRUE);
}
void StandaloneApplication(int argc, char** argv) {
test();
}
int main(int argc, char** argv){
TApplication app("ROOT Application", &argc, argv);
StandaloneApplication(app.Argc(), app.Argv());
app.Run();
return 0;
}
I’m sure the issue comes from my somewhat limited knowledge of declaring objects in C++, but I’ve tried lots of options already before asking here.
I’ll appreciate if someone could help me fixing this one.
Many thanks in advance
_ROOT Version: 6.30/04
_Platform: Conda, Debian GNU/Linux
_Compiler: GCC