I have a ROOT based program, that I was able to successfully compile on ROOT 6.28. However, now, after upgrading to ROOT 6.30 I am unable to generate a makefile with cmake:
-- The C compiler identification is GNU 13.2.1
-- The CXX compiler identification is GNU 13.2.1
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /bin/cc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /bin/c++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
CMake Error at /usr/share/cmake/Modules/FindPackageHandleStandardArgs.cmake:230 (message):
Could NOT find Vdt (missing: VDT_INCLUDE_DIR VDT_LIBRARY)
Call Stack (most recent call first):
/usr/share/cmake/Modules/FindPackageHandleStandardArgs.cmake:600 (_FPHSA_FAILURE_MESSAGE)
/opt/root-6.30.04_src/cmake/modules/FindVdt.cmake:63 (find_package_handle_standard_args)
/usr/share/cmake/Modules/CMakeFindDependencyMacro.cmake:76 (find_package)
/opt/root-6.30.04/ROOTConfig.cmake:150 (find_dependency)
CMakeLists.txt:8 (find_package)
-- Configuring incomplete, errors occurred!
I was never dealing with VDT in any way and I am not even sure if ROOT compiled it or not… I could not find a relevant information in the documentation. What should I do? I attach my CMakeLists.txt CMakeLists.txt (1.1 KB)
I’ve noticed on this forum that there was an error which I though was the same error and was supposedly fixed in master after 6.30.02, but, apparently, must have been something else.
ROOT Version: 6.30.04 Platform: Fedora 38 Compiler: Not Provided
if(ROOT_vdt_FOUND AND NOT TARGET VDT::VDT)
if(ROOT_builtin_vdt_FOUND)
function(find_builtin_vdt)
# the function is to create a scope (could use block() but requires CMake>=3.25)
set(CMAKE_PREFIX_PATH ${ROOT_INCLUDE_DIRS} ${ROOT_LIBRARY_DIR})
find_dependency(Vdt)
endfunction()
find_builtin_vdt()
else()
find_dependency(Vdt)
endif()
endif()
Thanks, the problem was claimed to be solved in the master before the 6.30.04 release, so I assumed… it was indeed solved.
Is there a workaround that I can implement in my cmake file? I can’t force the users to modify their root installation. Otherwise, the solution is waiting a few months for the next ROOT release, hoping that this time the problem will be solved…
or try to set the VDT_INCLUDE_DIR and VDT_LIBRARY values to point to ${ROOT_INCLUDE_DIRS} and ${ROOT_LIBRARY_DIR}/Vdt (or whatever the Vdt library name is, I can’t try, there is no Vdt on Windows…)
Thanks. Unfortunately, my knowledge of cmake is very rudimentary, and I am not sure if the following problems come from my bad environment setting or something else. However, it seems ROOT_INCLUDE_DIRS etc. are set only after calling find_package(ROOT CONFIG REQUIRED). And this fails in Vdt…
I would ask for a patch release, but I know that’s not how it works. Well, a few months more wait for a much faster import of ROOT in Python. We’ll have to be patient
That’s not about preference, but about most users not compiling ROOT themselves, but using binary releases. I am not coding for myself.
However, just out of curiosity: why didn’t the Vdt fix make it to 6.30.04? It looked like it was discovered and allegedly fixed in master a long time before release. Was the fix not enough?