Hi.
I am using ROOT version 6.18.04. I am trying to use cmake to create shared libraries. I have an example that is used to create static libraries but the problem is that I am not able to load them in the interpreter. This is the code I am using to generate the libraries:
cmake_minimum_required(VERSION 3.5)
project(HypoTestInv LANGUAGES CXX)
# Using ROOT's CONFIG mode search
# The Makefile method also included (non-explicitly, though): Foam Html MathMore Minuit XMLParser
list(APPEND CMAKE_PREFIX_PATH /Users/cashcrusaders/Applications/root-6.18.04_hist)
find_package(ROOT CONFIG REQUIRED COMPONENTS RooStats RooFit RooFitCore HistFactory)
if(TARGET ROOT::Minuit2)
message(STATUS "Minuit2 included in ROOT")
else()
message(STATUS "Minuit2 missing from ROOT, using standalone edition")
find_package(Minuit2 CONFIG REQUIRED)
endif()
# Set flags and things automagically (not ideal, but simplest for now)
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/inc/)
include("${ROOT_USE_FILE}")
message(STATUS "Root use_file Path is: " ${ROOT_USE_FILE})
# This function adds a LinkDef and ROOT dictionary for a library
function(ADD_LIBRARY_LINK_DEF NAME)
file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/RootDict/${NAME}Dict_LinkDef.h"
"#ifdef __CINT__\n"
"#pragma link C++ nestedclasses;\n"
"#pragma link C++ nestedtypedefs;\n"
"#pragma link C++ defined_in \"${CMAKE_CURRENT_SOURCE_DIR}/inc/${NAME}.h\";\n"
"#endif\n")
root_generate_dictionary(
G__${NAME}
${NAME}.h
LINKDEF
"${CMAKE_CURRENT_BINARY_DIR}/RootDict/${NAME}Dict_LinkDef.h"
)
add_library(${NAME} STATIC G__${NAME}.cxx ${NAME}.cxx)
# add_library(${NAME}_DYN SHARED G__${NAME}.cxx ${NAME}.cxx)
target_link_libraries(${NAME} INTERFACE ${ROOT_LIBRARIES})
# Link to ROOT's Minuit 2 if available, otherwise standalone edition
if(TARGET ROOT::Minuit2)
target_link_libraries(${NAME} INTERFACE ROOT::Minuit2)
else()
target_link_libraries(${NAME} INTERFACE Minuit2::Minuit2)
endif()
endfunction()
# Adding core libraries
add_library_link_def(WorkspaceCalculator)
add_library_link_def(ProfileLikelihoodTestStatEnhanced)
add_library_link_def(LimitCalculator)
add_library_link_def(LikelihoodCalculator)
add_library_link_def(PValueCalculator)
add_library_link_def(FitCalculator)
add_library_link_def(HistFactorySimultaneous)
add_library_link_def(RooSimultaneous1)
add_library_link_def(RooSimGenContext)
add_library_link_def(RooSimSplitGenContext)
add_library_link_def(RooAbsPdf)
#add_library_link_def(RooWorkspace)
add_library_link_def(HypoTestInverter)
#add_library_link_def(FrequentistCalculator)
#add_library_link_def(AsymptoticCalculator)
#add_library_link_def(HybridCalculator)
add_library_link_def(HypoTestCalculatorGeneric)
add_library_link_def(ToyMCSampler)
#add_library_link_def(ModelConfig)
# Adding executables
add_executable(StandardHypoTestInv StandardHypoTestInv.cxx)
target_link_libraries(StandardHypoTestInv PUBLIC
WorkspaceCalculator ProfileLikelihoodTestStatEnhanced LimitCalculator RooSimultaneous1 HistFactorySimultaneous RooSimGenContext RooSimSplitGenContext HypoTestInverter RooAbsPdf ToyMCSampler)
#add_executable(StandardFrequentistDiscovery StandardFrequentistDiscovery.cxx)
#target_link_libraries(StandardFrequentistDiscovery PUBLIC
# WorkspaceCalculator ProfileLikelihoodTestStatEnhanced PValueCalculator)
#add_executable(LikelihoodScan LikelihoodScan.cxx)
#target_link_libraries(LikelihoodScan PUBLIC
# WorkspaceCalculator ProfileLikelihoodTestStatEnhanced LikelihoodCalculator)
#add_executable(SimpleFit SimpleFit.cxx)
#target_link_libraries(SimpleFit PUBLIC
# WorkspaceCalculator ProfileLikelihoodTestStatEnhanced FitCalculator)
Thank you in adv ance