CMake Issue when linking ROOT Targets
The following minimal CMake Config works fine (with some hello-world main.cpp and using LCG_96b):
CMAKE_MINIMUM_REQUIRED(VERSION 2.8.5)
find_package(ROOT COMPONENTS Geom)
find_package(GaudiProject)
gaudi_project(acts-linktest-gaudi HEAD
USE Gaudi v32r0 )
gaudi_add_module(acts-linktest-main main.cpp
LINK_LIBRARIES ROOT::Geom)
However if I reverse the order in the following way:
find_package(GaudiProject)
find_package(ROOT COMPONENTS Geom)
I get the following failure:
...
-- imported RootHistCnv v32r0
-- Preparing environment configuration:
-- environment for external packages
-- ROOT
-- PythonInterp
-- Boost
-- environment for the project
-- environment for local subdirectories
-- Generating acts-linktest-gaudi.xenv
-- Generating acts-linktest-gaudi-build.xenv
-- Generating acts-linktest-gaudiConfigVersion.cmake
-- Generating acts-linktest-gaudiConfig.cmake
-- Generating acts-linktest-gaudiPlatformConfig.cmake
-- Generating 'export' files.
-- Generating manifest.xml
-- Configuring done
CMake Warning (dev) at /usr/local/cmake/GaudiProjectConfig.cmake:2218 (add_library):
Policy CMP0028 is not set: Double colon in target name means ALIAS or
IMPORTED target. Run "cmake --help-policy CMP0028" for policy details.
Use the cmake_policy command to set the policy and suppress this warning.
Target "acts-linktest-main" links to target "ROOT::Geom" but the target was
not found. Perhaps a find_package() call is missing for an IMPORTED
target, or an ALIAS target is missing?
Call Stack (most recent call first):
CMakeLists.txt:11 (gaudi_add_module)
This warning is for project developers. Use -Wno-dev to suppress it.
-- Generating done
-- Build files have been written to: /home/vali/repo/acts-linkertest-gaudi/build
~/repo/acts-linkertest-gaudi/build (master *)$ make
Scanning dependencies of target acts-linktest-main
[ 25%] Building CXX object CMakeFiles/acts-linktest-main.dir/main.cpp.o
[ 50%] Linking CXX shared module lib/libacts-linktest-main.so
/usr/bin/ld: cannot find -lROOT::Geom
collect2: error: ld returned 1 exit status
CMakeFiles/acts-linktest-main.dir/build.make:95: recipe for target 'lib/libacts-linktest-main.so' failed
make[2]: *** [lib/libacts-linktest-main.so] Error 1
CMakeFiles/Makefile2:334: recipe for target 'CMakeFiles/acts-linktest-main.dir/all' failed
make[1]: *** [CMakeFiles/acts-linktest-main.dir/all] Error 2
Makefile:140: recipe for target 'all' failed
make: *** [all] Error 2
~/repo/acts-linkertest-gaudi/build (master *)$
To me this seems like a bug, no? (Note that I am forced to use the ROOT CMake Targets via Acts).