Procházet zdrojové kódy

ENH: Changed the default symbol visibility to hidden for GNU gcc

See issue #10 for more details. Compiler specific import/export
declarations are taken from Qt via Q_DECL_IMPORT and Q_DECL_EXORT.
Compiler switches for changing the default visiblity must be added in
CMakeLists.txt for newly supported compilers.
Sascha Zelzer před 15 roky
rodič
revize
e366b682ac
3 změnil soubory, kde provedl 12 přidání a 7 odebrání
  1. 5 0
      CMakeLists.txt
  2. 6 7
      Libs/CTKExport.h.in
  3. 1 0
      SuperBuild.cmake

+ 5 - 0
CMakeLists.txt

@@ -12,6 +12,11 @@ PROJECT(CTK)
 SET(CTK_LIBRARY_MODE "SHARED")
 SET(CTK_BUILD_SHARED_LIBS TRUE)
 
+# Set the default symbol visibility to hidden for gcc
+IF(${CMAKE_CXX_COMPILER_ID} STREQUAL "GNU")
+  SET(CTK_CXX_FLAGS "-fvisibility=hidden -fvisibility-inlines-hidden")
+ENDIF()
+
 #-----------------------------------------------------------------------------
 # Output directories.
 #

+ 6 - 7
Libs/CTKExport.h.in

@@ -8,14 +8,13 @@
 #ifndef __@MY_EXPORT_HEADER_PREFIX@Export_h
 #define __@MY_EXPORT_HEADER_PREFIX@Export_h
 
-#if defined(WIN32) && !defined(@MY_LIBNAME@_STATIC)
- #if defined(@MY_LIBNAME@_EXPORTS)
-  #define @MY_LIBRARY_EXPORT_DIRECTIVE@ __declspec( dllexport ) 
- #else
-  #define @MY_LIBRARY_EXPORT_DIRECTIVE@ __declspec( dllimport ) 
- #endif
+#include <QtCore/qglobal.h>
+
+#if defined(@MY_LIBNAME@_EXPORTS)
+ #define @MY_LIBRARY_EXPORT_DIRECTIVE@ Q_DECL_EXPORT
 #else
- #define @MY_LIBRARY_EXPORT_DIRECTIVE@
+ #define @MY_LIBRARY_EXPORT_DIRECTIVE@ Q_DECL_IMPORT
 #endif
 
 #endif
+

+ 1 - 0
SuperBuild.cmake

@@ -314,6 +314,7 @@ ExternalProject_Add(${proj}
     -DCTEST_USE_LAUNCHERS:BOOL=${CTEST_USE_LAUNCHERS}
     -DCMAKE_INSTALL_PREFIX:PATH=${ep_install_dir}
     -DCMAKE_BUILD_TYPE:STRING=${CMAKE_BUILD_TYPE}
+    -DCMAKE_CXX_FLAGS:STRING=${CTK_CXX_FLAGS}
     -DQT_QMAKE_EXECUTABLE:FILEPATH=${QT_QMAKE_EXECUTABLE}
     -DCTK_KWSTYLE_EXECUTABLE:FILEPATH=${CTK_KWSTYLE_EXECUTABLE}
     -DDCMTK_DIR=${DCMTK_DIR} # FindDCMTK expects DCMTK_DIR