Я использую CMake для компиляции моих проектов на основе ROOT.Если у вас есть проектный каталог proj / и он содержит src / и bin /, вам понадобятся 3 файла CMakeList.txt, по одному в каждом каталоге.
Простой пример CMakeList.txt в основном каталоге проекта:
cmake_minimum_required(VERSION 2.6)
project (SOME_PROJ_NAME)
add_subdirectory(src)
add_subdirectory(bin)
В каталоге src / вы храните свои .h и .cxx proj.библиотечные файлы.Пример файла CMakeList.txt:
# get all the *.cxx filenames, to compile them into a lib
file(GLOB SOME_PROJ_LIB_SRCS "${PROJECT_SOURCE_DIR}/src/*.cxx")
# include ROOT library and include files
include_directories(/path/to/root/dir/include/dir)
link_directories(/path/to/root/dir/lib/dir)
# and compile src into a library
add_library(Proj_lib_name ${SOME_PROJ_LIB_SRCS})
# here, list the ROOT libraries you require
target_link_libraries(Proj_lib_name dl Core Cint RIO Net Hist Graf Graf3d Gpad Tree Rint Postscript Matrix Physics MathCore Thread Gui pthread m)
В каталоге bin / хранятся файлы .cxx вашего приложения, и в нем есть файл CMakeList.txt:
include_directories(${PROJECT_SOURCE_DIR}/src)
link_directories(${PROJECT_SOURCE_DIR}/src)
include_directories(/path/to/root/dir/include/dir)
link_directories(/path/to/root/dir/lib/dir)
add_executable(example_app.exe example_app.cxx)
target_link_libraries(example_app.exe Proj_lib_name dl Core Cint RIO Net Hist Graf Graf3d Gpad Tree Rint Postscript Matrix Physics MathCore Thread Gui pthread m)
Наконец, для компиляции ROOTНа основе кода с CMake, из исходного кода, вы создаете dir "build" в dir вашего проекта верхнего уровня, так что ваша структура dir выглядит следующим образом:
proj/
bin/
build/
src/
Затем
cd build
cmake ..
Ваши двоичные файлы будут расположены в каталоге build / bin /
Надеюсь, это поможет.