Dear All,
I am trying to include the th1f library in my cmake project, trying to adapt this root.cern.ch/how/integrate-root … ject-cmake, but I get a strange error:
[code]-- Configuring done
CMake Error at CMakeLists.txt:73 (add_library):
Cannot find source file:
TH1F.cxx
Tried extensions .c .C .c++ .cc .cpp .cxx .m .M .mm .h .hh .h++ .hm .hpp
.hxx .in .txx
CMake Error: CMake can not determine linker language for target: TH1F
CMake Error: Cannot determine link language for target “TH1F”.
– Generating done
[/code]
the relevant sections of the CMakeList.txt file are:
list(APPEND CMAKE_PREFIX_PATH $ENV{ROOTSYS})
[...]
find_package(ROOT REQUIRED COMPONENTS RIO Net Hist)
and
[code]
enable_testing()
set(PROJECT_TEST_NAME ${PROJECT_NAME_STR}_test)
include(${ROOT_USE_FILE})
link_libraries(${CMAKE_THREAD_LIBS_INIT} ${TIFF_LIBRARY})
file(GLOB TEST_SRC_FILES ${PROJECT_SOURCE_DIR}/test/.cpp)
file(GLOB ALL_SRC_FILES ${CPP_SOURCE_FILES}/.cpp)
add_executable(${PROJECT_TEST_NAME} ${TEST_SRC_FILES} ${ALL_SRC_FILES})
add_dependencies(${PROJECT_TEST_NAME} googletest)
include_directories(${GTEST_INCLUDE_DIRS}
${COMMON_INCLUDES}
${COMMON_LOCAL}/include
${EIGEN3_INCLUDE_DIR}
${ZLIB_INCLUDE_DIR}
${CMAKE_CURRENT_SOURCE_DIR}/include
)
link_directories(${COMMON_LIB})
ROOT_GENERATE_DICTIONARY(G__TH1F TH1F.h LINKDEF TH1FLinkDef.h)
#—Create a shared library with geneated dictionary
add_library(TH1F SHARED TH1F.cxx G__TH1F.cxx)
target_link_libraries(TH1F ${ROOT_LIBRARIES})
target_link_libraries(${PROJECT_TEST_NAME} tiff jpeg jbig xz z ${GTEST_LIBS_DIR}/libgtest.a ${GTEST_LIBS_DIR}/libgtest_main.a ${CMAKE_THREAD_LIBS_INIT} TH1F
)
add_test(test1 ${PROJECT_TEST_NAME})
###[/code]
can you help me spotting the bug?
Is there some documentation for
ROOT_GENERATE_DICTIONARY and which option to pass to find_package(ROOT REQUIRED … ) ?
Thanks a lot!