]> Creatis software - cpPlugins.git/blobdiff - lib/cpExtensions/CMakeLists.txt
...
[cpPlugins.git] / lib / cpExtensions / CMakeLists.txt
index 6e3c9403fa73d9ef56c33ca0ba1152b45df84f12..4920b81ac2d9ecb58951b5837c7fb44505c12bee 100644 (file)
-SET(LIBRARY_NAME cpExtensions)
+SET(_curdir ${CMAKE_CURRENT_SOURCE_DIR})
+GET_FILENAME_COMPONENT(_lib_name ${_curdir} NAME_WE)
 
-CONFIGURE_FILE(
-  Config.h.in
-  ${PROJECT_BINARY_DIR}/lib/cpExtensions/Config.h
-  @ONLY
-  )
+## =========================
+## = Configure local files =
+## =========================
 
-## ===============
-## = Source code =
-## ===============
+FILE(GLOB_RECURSE _lib_config RELATIVE "${_curdir}" "${_curdir}/*.in")
+FOREACH(_file ${_lib_config})
+  STRING(REGEX REPLACE ".in" "" _outfile ${_file})
+  CONFIGURE_FILE(${_file} ${CMAKE_CURRENT_BINARY_DIR}/${_outfile} @ONLY)
+ENDFOREACH(_file)
 
-SET(LIB_HEADERS_H   "")
-SET(LIB_HEADERS_HPP "")
-SET(LIB_HEADERS_HXX "")
-SET(LIB_SOURCES_C   "")
-SET(LIB_SOURCES_CPP "")
-SET(LIB_SOURCES_CXX "")
-
-SET(
-  lib_DIRECTORIES
-  .
-  DataStructures
-  Algorithms
-  IO
-  Interaction
-  Visualization
-  )
-FOREACH(dir ${lib_DIRECTORIES})
-  FILE(GLOB dir_LIB_HEADERS_H   "${dir}/*.h")
-  FILE(GLOB dir_LIB_HEADERS_HPP "${dir}/*.hpp")
-  FILE(GLOB dir_LIB_HEADERS_HXX "${dir}/*.hxx")
-  FILE(GLOB dir_LIB_SOURCES_C   "${dir}/*.c")
-  FILE(GLOB dir_LIB_SOURCES_CPP "${dir}/*.cpp")
-  FILE(GLOB dir_LIB_SOURCES_CXX "${dir}/*.cxx")
+## =====================
+## == Get source code ==
+## =====================
 
-  SET(LIB_HEADERS_H   "${LIB_HEADERS_H};${dir_LIB_HEADERS_H}")
-  SET(LIB_HEADERS_HPP "${LIB_HEADERS_HPP};${dir_LIB_HEADERS_HPP}")
-  SET(LIB_HEADERS_HXX "${LIB_HEADERS_HXX};${dir_LIB_HEADERS_HXX}")
-  SET(LIB_SOURCES_C   "${LIB_SOURCES_C};${dir_LIB_SOURCES_C}")
-  SET(LIB_SOURCES_CPP "${LIB_SOURCES_CPP};${dir_LIB_SOURCES_CPP}")
-  SET(LIB_SOURCES_CXX "${LIB_SOURCES_CXX};${dir_LIB_SOURCES_CXX}")
+FILE(GLOB_RECURSE _hdr_h   "${_curdir}/*.h")
+FILE(GLOB_RECURSE _hdr_hpp "${_curdir}/*.hxx")
+FILE(GLOB_RECURSE _hdr_hxx "${_curdir}/*.hpp")
+FILE(GLOB_RECURSE _src_c   "${_curdir}/*.c")
+FILE(GLOB_RECURSE _src_cpp "${_curdir}/*.cpp")
+FILE(GLOB_RECURSE _src_cxx "${_curdir}/*.cxx")
+FILE(GLOB_RECURSE _qt_ui   "${_curdir}/*.ui")
 
-  INSTALL(
-    DIRECTORY ${dir}
-    DESTINATION include/cpExtensions
-    FILES_MATCHING PATTERN "*.h"
-    )
-  INSTALL(
-    DIRECTORY ${dir}
-    DESTINATION include/cpExtensions
-    FILES_MATCHING PATTERN "*.hpp"
-    )
-  INSTALL(
-    DIRECTORY ${dir}
-    DESTINATION include/cpExtensions
-    FILES_MATCHING PATTERN "*.hxx"
-    )
-ENDFOREACH(dir)
+SET(_src_all ${_src_c} ${_src_cpp} ${_src_cxx})
 
-IF(USE_QT4)
-  FILE(GLOB LIB_QT_UI "QT/*.ui")
-  FILE(GLOB LIB_QT_Headers "QT/*.h")
-  FILE(GLOB LIB_QT_Sources "QT/*.cxx")
-  FILE(GLOB LIB_QT_Resources "QT/*.rc")
+## ====================
+## == Create library ==
+## ====================
 
-  QT4_WRAP_UI(LIB_QT_Wrapped_Headers ${LIB_QT_UI})
-  QT4_WRAP_CPP(LIB_QT_Wrapped_MOC_Sources ${LIB_QT_Headers})
-  QT4_ADD_RESOURCES(LIB_QT_Wrapped_Resources_Sources ${LIB_QT_Resources})
+IF(_src_all)
+  IF(USE_QT4)
+    SET(_hdr_to_wrap)
+    FOREACH(_h ${_hdr_h})
+      FILE(READ ${_h} _txt)
+      STRING(FIND "${_txt}" "Q_OBJECT" _res)
+      IF(NOT ${_res} EQUAL -1)
+        LIST(APPEND _hdr_to_wrap ${_h})
+      ENDIF(NOT ${_res} EQUAL -1)
+    ENDFOREACH(_h)
+    IF(_hdr_to_wrap)
+      QT4_WRAP_CPP(_src_qt_moc ${_hdr_to_wrap})
+    ENDIF(_hdr_to_wrap)
+    QT4_WRAP_UI(_hdr_qt_ui ${_qt_ui})
+    SET(_src_all ${_src_all} ${_hdr_qt_ui} ${_src_qt_moc})
+  ENDIF(USE_QT4)
 
-  SET(
-    LIB_HEADERS_H
-    ${LIB_HEADERS_H}
-    ${LIB_QT_Wrapped_Headers}
+  ADD_LIBRARY(${_lib_name} SHARED ${_src_all})
+  SET_TARGET_PROPERTIES(
+    ${_lib_name} PROPERTIES
+    VERSION "${prj_VER}"
+    SOVERSION "${prj_sVER}"
     )
-  SET(
-    LIB_SOURCES_CXX
-    ${LIB_SOURCES_CXX}
-    ${LIB_QT_Sources}
-    ${LIB_QT_Wrapped_Headers}
-    ${LIB_QT_Wrapped_MOC_Sources}
-    ${LIB_QT_Wrapped_Resources_Sources}
+  GENERATE_EXPORT_HEADER(
+    ${_lib_name}
+    BASE_NAME ${_lib_name}
+    EXPORT_MACRO_NAME ${_lib_name}_EXPORT
+    EXPORT_FILE_NAME ${CMAKE_CURRENT_BINARY_DIR}/${_lib_name}_Export.h
+    STATIC_DEFINE ${_lib_name}_BUILT_AS_STATIC
     )
-ENDIF(USE_QT4)
-
-## =====================
-## = Compilation rules =
-## =====================
-
-ADD_LIBRARY(
-  ${LIBRARY_NAME}
-  SHARED
-  ${LIB_SOURCES_C}
-  ${LIB_SOURCES_CPP}
-  ${LIB_SOURCES_CXX}
-  )
-SET_TARGET_PROPERTIES(
-  ${LIBRARY_NAME} PROPERTIES
-  VERSION "${prj_VER}"
-  SOVERSION "${prj_sVER}"
-  )
-GENERATE_EXPORT_HEADER(
-  ${LIBRARY_NAME}
-  BASE_NAME ${LIBRARY_NAME}
-  EXPORT_MACRO_NAME ${LIBRARY_NAME}_EXPORT
-  EXPORT_FILE_NAME ${PROJECT_BINARY_DIR}/lib/cpExtensions/${LIBRARY_NAME}_Export.h
-  STATIC_DEFINE ${LIBRARY_NAME}_BUILT_AS_STATIC
-  )
-TARGET_LINK_LIBRARIES(
-  ${LIBRARY_NAME}
-  ${QT_LIBRARIES}
-  ${ITK_LIBRARIES}
-  ${VTK_LIBRARIES}
-  )
-
-## ========================
-## -- Installation rules --
-## ========================
-
-INSTALL(
-  TARGETS ${LIBRARY_NAME}
-  RUNTIME DESTINATION bin
-  LIBRARY DESTINATION lib
-  ARCHIVE DESTINATION lib/static
-  )
-INSTALL(
-  FILES
-  ${PROJECT_BINARY_DIR}/lib/cpExtensions/${LIBRARY_NAME}_Export.h
-  DESTINATION include/cpExtensions
-  )
+  IF(USE_QT4)
+    TARGET_LINK_LIBRARIES(
+      ${_lib_name} ${ITK_LIBRARIES} ${VTK_LIBRARIES} ${QT_LIBRARIES}
+      )
+  ELSE(USE_QT4)
+    TARGET_LINK_LIBRARIES(${_lib_name} ${ITK_LIBRARIES} ${VTK_LIBRARIES})
+  ENDIF(USE_QT4)
+  SET(${_lib_name}_LIB ${_lib_name} CACHE INTERNAL "library ${_lib_name}")
+ENDIF(_src_all)
 
 ## eof - $RCSfile$