project(vtkPlmCommon) # -------------------------------------------------------------------------- # Configure headers # -------------------------------------------------------------------------- set(configure_header_file vtkPlmCommonConfigure.h) configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/${configure_header_file}.in ${CMAKE_CURRENT_BINARY_DIR}/${configure_header_file} ) find_package(Plastimatch QUIET PATHS ${Plastimatch_DIR} NO_DEFAULT_PATH) if(NOT Plastimatch_FOUND) message("Plastimatch library is not found. DoseComparison module will not be built.") return() endif() # -------------------------------------------------------------------------- # Sources # -------------------------------------------------------------------------- SET (PlmCommon_SRCS PlmCommon.cxx PlmCommon.h ) SET (PlmCommon_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR} ${Slicer_Libs_INCLUDE_DIRS} ${vtkSegmentationCore_INCLUDE_DIRS} ${SlicerRtCommon_INCLUDE_DIRS} ${PLASTIMATCH_INCLUDE_DIRS} CACHE INTERNAL "" FORCE) # -------------------------------------------------------------------------- # Build the library # -------------------------------------------------------------------------- set(lib_name ${PROJECT_NAME}) SET (PlmCommon_LIBS ${PlmCommon_LIBS} vtkSlicerRtCommon ${PLASTIMATCH_LIBRARIES} ) INCLUDE_DIRECTORIES( ${PlmCommon_INCLUDE_DIRS} ) ADD_LIBRARY(${lib_name} ${PlmCommon_SRCS}) TARGET_LINK_LIBRARIES( ${lib_name} ${PlmCommon_LIBS} ) # Set loadable modules output set_target_properties(${lib_name} PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${Slicer_QTLOADABLEMODULES_BIN_DIR}" LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${Slicer_QTLOADABLEMODULES_LIB_DIR}" ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${Slicer_QTLOADABLEMODULES_LIB_DIR}" ) IF (CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64" AND NOT WIN32) SET_TARGET_PROPERTIES(${lib_name} PROPERTIES COMPILE_FLAGS "-fPIC") ENDIF() set_property(GLOBAL APPEND PROPERTY Slicer_TARGETS ${lib_name}) # -------------------------------------------------------------------------- # Install library # -------------------------------------------------------------------------- install(TARGETS ${lib_name} RUNTIME DESTINATION ${Slicer_INSTALL_QTLOADABLEMODULES_BIN_DIR} COMPONENT RuntimeLibraries LIBRARY DESTINATION ${Slicer_INSTALL_QTLOADABLEMODULES_LIB_DIR} COMPONENT RuntimeLibraries ARCHIVE DESTINATION ${Slicer_INSTALL_QTLOADABLEMODULES_LIB_DIR} COMPONENT Development ) # -------------------------------------------------------------------------- # Python wrapping # -------------------------------------------------------------------------- if(VTK_WRAP_PYTHON AND BUILD_SHARED_LIBS) set(Slicer_Wrapped_LIBRARIES ) if(${VTK_VERSION} VERSION_LESS "8.90") foreach(library ${lib_name}) if(TARGET ${library}PythonD) list(APPEND Slicer_Wrapped_LIBRARIES ${library}PythonD) endif() endforeach() endif() SlicerMacroPythonWrapModuleVTKLibrary( NAME ${PROJECT_NAME} SRCS ${PlmCommon_SRCS} WRAPPED_TARGET_LIBRARIES ${Slicer_Wrapped_LIBRARIES} RELATIVE_PYTHON_DIR "." ) # Set python module logic output set_target_properties(${PROJECT_NAME}Python ${PROJECT_NAME}Python PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${Slicer_QTLOADABLEMODULES_BIN_DIR}" LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${Slicer_QTLOADABLEMODULES_LIB_DIR}" ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${Slicer_QTLOADABLEMODULES_LIB_DIR}" ) if(${VTK_VERSION} VERSION_LESS "8.90") set_target_properties(${PROJECT_NAME}PythonD PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${Slicer_QTLOADABLEMODULES_BIN_DIR}" LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${Slicer_QTLOADABLEMODULES_LIB_DIR}" ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${Slicer_QTLOADABLEMODULES_LIB_DIR}" ) endif() # Export target set_property(GLOBAL APPEND PROPERTY Slicer_TARGETS ${PROJECT_NAME}Python) if(${VTK_VERSION} VERSION_LESS "8.90") set_property(GLOBAL APPEND PROPERTY Slicer_TARGETS ${PROJECT_NAME}PythonD) endif() endif()