소스 검색

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 년 전
부모
커밋
c5b89b6ec5
2개의 변경된 파일13개의 추가작업 그리고 1개의 파일을 삭제
  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)