Prechádzať zdrojové kódy

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 14 rokov pred
rodič
commit
c5b89b6ec5
2 zmenil súbory, kde vykonal 13 pridanie a 1 odobranie
  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)