abseil-cpp icon indicating copy to clipboard operation
abseil-cpp copied to clipboard

Can't compile as sub-dependency

Open paro- opened this issue 2 years ago • 2 comments

Hello,

I'm not managing to compile my project, not sure it's abseil's fault. My project depends on s2geometry, which in turn depends on abseil. s2geometry used to include their own version of abseil, but now that they made it external I can't compile anymore.

Indeed in my CMakeLists.txt I added add_subdirectory(third-party/abseil) before add_subdirectory(third-party/s2geometry) but s2 complained that it couldn't find abslConfig.cmake so I used set(ABSL_ENABLE_INSTALL ON) to have it, but now I'm stuck on the following error: CMake Error at build/third-party/abseil-cpp/abslConfig.cmake:32 (include): [cmake] include could not find load file: [cmake] [cmake] [...]/build/third-party/abseil-cpp/abslTargets.cmake [cmake] Call Stack (most recent call first): [cmake] third-party/s2geometry/CMakeLists.txt:71 (find_package)

The targets don't seem to be installed when add_subdirectory(third-party/abseil) finishes, when s2 launches find_package(absl REQUIRED). Which brings me to my question: is there a way to include abseil as a sub-dependency, or am I missing something here?

Best regards, Paul

paro- avatar Aug 22 '22 15:08 paro-

You can try disabling find_package for Abseil after including it as as a subdirectory:

add_subdirectory(third_party/absl)

# Disable subsequent find_package(absl)
set(absl_FOUND TRUE)

add_subdirectory(third_party/s2geometry)

If that doesn't help, you might have to use ExternalProject_Add for all third-party packages.

anpol avatar Sep 05 '22 19:09 anpol

https://github.com/google/s2geometry/pull/285 Also fixed in s2, don't think it's best solution but works for us

MBkkt avatar Dec 27 '22 02:12 MBkkt