Kaynağa Gözat

ENH: Added the following option to CMakeLists.txt WITH_COVERAGE, ADDITIONAL_CXX_FLAGS, ADDITIONAL_C_FLAGS

The option CTK_C_FLAGS and CTK_CXX_FLAGS are passed from superbuild to CTK project.
Then, the option CMAKE_{C,CXX}_FLAGS are set using CTK_{C,CXX}_FLAGS variable
Jean-Christophe Fillion-Robin 15 yıl önce
ebeveyn
işleme
45df2bc7f8
2 değiştirilmiş dosya ile 40 ekleme ve 16 silme
  1. 38 15
      CMakeLists.txt
  2. 2 1
      SuperBuild.cmake

+ 38 - 15
CMakeLists.txt

@@ -12,13 +12,6 @@ PROJECT(CTK)
 SET(CTK_LIBRARY_MODE "SHARED")
 SET(CTK_BUILD_SHARED_LIBS TRUE)
 
-IF(CMAKE_CXX_COMPILER_ID)
-  # 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()
-ENDIF()
-
 #-----------------------------------------------------------------------------
 # Output directories.
 #
@@ -118,6 +111,41 @@ ENDIF()
 OPTION(WITH_COVERAGE "Enable/Disable coverage" OFF)
 
 #-----------------------------------------------------------------------------
+# Additional CXX/C Flags
+#
+SET(ADDITIONAL_C_FLAGS "" CACHE STRING "Additional C Flags")
+MARK_AS_ADVANCED(ADDITIONAL_C_FLAGS)
+SET(ADDITIONAL_CXX_FLAGS "" CACHE STRING "Additional CXX Flags")
+MARK_AS_ADVANCED(ADDITIONAL_CXX_FLAGS)
+
+#-----------------------------------------------------------------------------
+# Set symbol visibility Flags
+#
+IF(CMAKE_CXX_COMPILER_ID)
+  # Set the default symbol visibility to hidden for gcc
+  IF(${CMAKE_CXX_COMPILER_ID} STREQUAL "GNU")
+    SET(VISIBILITY_CXX_FLAGS "-fvisibility=hidden -fvisibility-inlines-hidden")
+  ENDIF()
+ENDIF()
+
+#-----------------------------------------------------------------------------
+# Set coverage Flags
+#
+IF(WITH_COVERAGE)
+  IF(CMAKE_CXX_COMPILER_ID AND ${CMAKE_CXX_COMPILER_ID} STREQUAL "GNU")
+    SET(coverage_flags "-g -fdiagnostics-show-option -fprofile-arcs -ftest-coverage -O3 -DNDEBUG")
+    SET(COVERAGE_CXX_FLAGS ${coverage_flags})
+    SET(COVERAGE_C_FLAGS ${coverage_flags})
+  ENDIF()
+ENDIF()
+
+#-----------------------------------------------------------------------------
+# CTK C/CXX Flags
+#
+SET(CTK_C_FLAGS "${COVERAGE_C_FLAGS} ${ADDITIONAL_C_FLAGS}")
+SET(CTK_CXX_FLAGS "${VISIBILITY_CXX_FLAGS} ${COVERAGE_CXX_FLAGS} ${ADDITIONAL_CXX_FLAGS}")
+
+#-----------------------------------------------------------------------------
 # QT
 #
 ctkMacroSetupQt()
@@ -286,15 +314,10 @@ IF(CTK_SUPERBUILD)
 ENDIF()
 
 #-----------------------------------------------------------------------------
-# Set coverage flag
+# Set C/CXX Flags
 #
-IF(WITH_COVERAGE)
-  IF(CMAKE_CXX_COMPILER_ID AND ${CMAKE_CXX_COMPILER_ID} STREQUAL "GNU")
-    SET(coverage_flags "-g -fdiagnostics-show-option -fprofile-arcs -ftest-coverage -O3 -DNDEBUG")
-    SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${coverage_flags}")
-    SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${coverage_flags}")
-  ENDIF()
-ENDIF()
+SET(CMAKE_CXX_FLAGS ${CTK_CXX_FLAGS})
+SET(CMAKE_C_FLAGS ${CTK_C_FLAGS})
 
 #-----------------------------------------------------------------------------
 # Add CTK library subdirectories

+ 2 - 1
SuperBuild.cmake

@@ -328,7 +328,8 @@ ExternalProject_Add(${proj}
     -DWITH_COVERAGE:BOOL=${WITH_COVERAGE}
     -DCMAKE_INSTALL_PREFIX:PATH=${ep_install_dir}
     -DCMAKE_BUILD_TYPE:STRING=${CMAKE_BUILD_TYPE}
-    -DCMAKE_CXX_FLAGS:STRING=${CTK_CXX_FLAGS}
+    -DCTK_CXX_FLAGS:STRING=${CTK_CXX_FLAGS}
+    -DCTK_C_FLAGS:STRING=${CTK_C_FLAGS}
     -DQT_QMAKE_EXECUTABLE:FILEPATH=${QT_QMAKE_EXECUTABLE}
     -DCTK_KWSTYLE_EXECUTABLE:FILEPATH=${CTK_KWSTYLE_EXECUTABLE}
     -DDCMTK_DIR=${DCMTK_DIR} # FindDCMTK expects DCMTK_DIR