Quellcode durchsuchen

Add linker flag zdefs - Unavailable symbol at link time trigger an error

DCMTK being built with multithread support, and the library oflog
relying on pthread functionalities, the FindDCMTK package add to be updated
to provide "pthread" has part of the DCMTK_LIBRARIES.
Jean-Christophe Fillion-Robin vor 14 Jahren
Ursprung
Commit
c5b89b6ec5
2 geänderte Dateien mit 13 neuen und 1 gelöschten Zeilen
  1. 1 1
      CMakeLists.txt
  2. 12 0
      Utilities/CMake/FindDCMTK.cmake

+ 1 - 1
CMakeLists.txt

@@ -272,7 +272,7 @@ IF(CMAKE_COMPILER_IS_GNUCXX)
   ENDIF()
   
   SET(CTK_C_FLAGS "${cflags} ${CTK_C_FLAGS}")
-  SET(CTK_CXX_FLAGS "${cflags} -Woverloaded-virtual -Wold-style-cast -Wstrict-null-sentinel -Wsign-promo ${CTK_CXX_FLAGS}")
+  SET(CTK_CXX_FLAGS "${cflags} -Wl,-z,defs -Woverloaded-virtual -Wold-style-cast -Wstrict-null-sentinel -Wsign-promo ${CTK_CXX_FLAGS}")
 ENDIF()
 
 IF(MSVC)

+ 12 - 0
Utilities/CMake/FindDCMTK.cmake

@@ -86,6 +86,8 @@ FIND_LIBRARY( DCMTK_oflog_LIBRARY oflog
   NO_DEFAULT_PATH
 )
 
+
+
 FIND_PATH( DCMTK_dcmdata_INCLUDE_DIR dctypes.h
   PATHS
     ${DCMTK_DIR}/include/dcmdata
@@ -232,6 +234,15 @@ IF( DCMTK_config_INCLUDE_DIR
 #                           "On Ubuntu, you could install it using 'sudo apt-get libwrap0'")
 #     ENDIF()
 #   ENDIF()
+
+  SET(CMAKE_THREAD_LIBS_INIT)
+  IF(DCMTK_oflog_LIBRARY)
+    # Hack - Not having a DCMTKConfig.cmake file to read the settings from, we will attempt to 
+    # find the library in all cases.
+    # Ideally, pthread library should be discovered only if DCMTK_WITH_THREADS is enabled.
+    SET(CMAKE_THREAD_PREFER_PTHREAD TRUE)
+    FIND_PACKAGE(Threads)
+  ENDIF()
   
   SET( DCMTK_FOUND "YES" )
   SET( DCMTK_INCLUDE_DIR
@@ -256,6 +267,7 @@ IF( DCMTK_config_INCLUDE_DIR
     ${DCMTK_oflog_LIBRARY}    
     ${DCMTK_ofstd_LIBRARY}
     ${DCMTK_config_LIBRARY}
+    ${CMAKE_THREAD_LIBS_INIT}
   )
 
   IF(DCMTK_imagedb_LIBRARY)