Including FastJet libraries into ROOT with CMake

Hello,

I have a root project that I compile together using CMake and I would like to incorporate the FastJet (http://fastjet.fr/) project into. I see that FastJet is already included in cvmfs, so I assume there’s no need for any further installation steps:

/cvmfs/sft.cern.ch/lcg/releases/LCG_98/fastjet/3.3.4

I don’t have much experience with writing CMake files so I would like some guidance on going about including these cvmfs FastJet into my existing CMake code, below :

cmake_minimum_required(VERSION 3.11.0 FATAL_ERROR)
#----------------------------------------------------------------------------
project(WWbbAnalysis)
set(PROJECT_VERSION 1.0.0)

set(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake/Modules ${CMAKE_MODULE_PATH})
#This module respects HFS, e.g. defines lib or lib64 when it is needed. 
include(GNUInstallDirs)
include(CheckCXXCompilerFlag)
#This is a workaround for ROOT+Cmake problem.
set(CMAKE_CXX_STANDARD 17)
#set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS ON)

set(CMAKE_EXPORT_COMPILE_COMMANDS ON)

set(QUALITY_CXX_FLAGS_TO_CHECK "-g" "-O2" "-pedantic" "-Werror" "-Wall" "-Wextra" "-Wno-unused-parameter")

add_compile_options(-g -Wall -fPIC -std=c++2a -O2 )


#----------------------------------------------------------------------------
#   ROOT
#----------------------------------------------------------------------------
find_package(ROOT REQUIRED COMPONENTS Core RIO Tree Physics)

#----------------------------------------------------------------------------
#   wwbb
#----------------------------------------------------------------------------
file( GLOB libwwbb_SRC "${PROJECT_SOURCE_DIR}/Root/*.cxx" "${PROJECT_SOURCE_DIR}/Root/*.C" )
add_library( libwwbb SHARED ${libwwbb_SRC}  )

message(STATUS "ROOT INCLUDE DIRS = ${ROOT_INCLUDE_DIRS}")

target_include_directories( libwwbb PRIVATE
                            ${PROJECT_SOURCE_DIR}/WWbbAnalysis
                            ${PROJECT_SOURCE_DIR}
                            ${PROJECT_SOURCE_DIR}/toml11
                            ${ROOT_INCLUDE_DIRS} )
set_target_properties( libwwbb PROPERTIES OUTPUT_NAME wwbb )

# specify the executable
add_executable( WWbbAnalysis src/WWbbAnalysis.cxx )
target_include_directories(WWbbAnalysis  PRIVATE
                            ${PROJECT_SOURCE_DIR}/WWbbAnalysis
                            ${PROJECT_SOURCE_DIR}
                            ${PROJECT_SOURCE_DIR}/toml11
                            ${ROOT_INCLUDE_DIRS} )

# invoke linker from the C++ compiler
set_target_properties( WWbbAnalysis PROPERTIES LINKER_LANGUAGE CXX )
set_target_properties( libwwbb PROPERTIES LINKER_LANGUAGE CXX )
target_link_libraries( libwwbb ${ROOT_LIBRARIES} stdc++fs )
target_link_libraries( WWbbAnalysis libwwbb )

# --- Install
install (TARGETS WWbbAnalysis
    DESTINATION lib)
install (DIRECTORY "${PROJECT_SOURCE_DIR}/WWbbAnalysis" DESTINATION include
    FILES_MATCHING PATTERN "*.h")
#---------------------------------------------------------------------------


I haven’t been able to find more detailed instructions beyond the “Quick-start” guide on the fast jet website regarding this, so any help is greatly appreciated.

Thanks,

Charlie

_ROOT Version: 6.24/06
_Platform: Ubuntu 20.04
Compiler: Not Provided


You should ask FastJet people, but maybe with something like this:

FIND_PACKAGE (Fastjet)
if (FASTJET_FOUND)
  include_directories("${FASTJET_INCLUDE_DIRS}")
endif (FASTJET_FOUND)

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.