-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 "")
+## =====================
+## == Get source code ==
+## =====================
-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")
+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")
- 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}")
+SET(_src_all ${_src_c} ${_src_cpp} ${_src_cxx})
- 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)
-
-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}
- ${LIBRARY_TYPE}
- ${LIB_SOURCES_C}
- ${LIB_SOURCES_CPP}
- ${LIB_SOURCES_CXX}
- )
-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$