From 9874cd11cb3c9390ac69f14130a368921d7a37ac Mon Sep 17 00:00:00 2001 From: Mehdi Chinoune Date: Fri, 29 Oct 2021 21:28:21 +0100 Subject: [PATCH] Fix exported OpenBLASTargets.cmake When both BUILD_SHARED_LIBS and BUILD_STATIC_LIBS are enabled, cmake export both of them to OpenBLASTargets under tha same name `OpenBLAS::OpenBLAS` which leads to fatal error about OpenBLAS::OpenBLAS being both static and shared target. This change makes cmake export only the shared library in that case. There is another solution to treat them as components, but I am afraid that will make it backward incompatible. --- CMakeLists.txt | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 656cc36f0..cdbb8c306 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -386,11 +386,22 @@ endif() # Install project # Install libraries -install(TARGETS ${OpenBLAS_LIBS} - EXPORT "OpenBLAS${SUFFIX64}Targets" - RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} - ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} - LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ) +if(BUILD_SHARED_LIBS AND BUILD_STATIC_LIBS) + install(TARGETS ${OpenBLAS_LIBNAME}_shared + EXPORT "OpenBLAS${SUFFIX64}Targets" + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ) + install(TARGETS ${OpenBLAS_LIBNAME}_static + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ) +else() + install(TARGETS ${OpenBLAS_LIBS} + EXPORT "OpenBLAS${SUFFIX64}Targets" + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ) +endif() # Install headers set(CMAKE_INSTALL_INCLUDEDIR ${CMAKE_INSTALL_INCLUDEDIR}/openblas${SUFFIX64})