Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- PROJECT(UnfoldSoftware)
- SET(EXECUTABLE_OUTPUT_PATH bin/)
- MAKE_DIRECTORY(${EXECUTABLE_OUTPUT_PATH})
- SET(LIBRARY_OUTPUT_PATH lib/)
- MAKE_DIRECTORY(${LIBRARY_OUTPUT_PATH})
- SET(PYTHON_OUTPUT_PATH python/)
- SET(UnfoldSoftware_SOURCE_DIR src/)
- SET(SRC src/)
- SET(UnfoldSoftware_VERSION 0.0.1)
- SET(UnfoldSoftware_BINARY_DIR ${EXECUTABLE_OUTPUT_PATH})
- SET(UnfoldSoftware_LIBRARY_DIR ${LIBRARY_OUTPUT_PATH})
- SET(UnfoldSoftware_DOC_DIR doc/)
- SET(UnfoldSoftware_CMAKE_DIR cmake/)
- #--------------------------#
- #define include directories
- INCLUDE_DIRECTORIES(.
- ${SRC}/utils ${SRC}/algos ${SRC}/utils/files ${SRC}/utils/meshes
- ${SRC}/unfolding ${SRC}/unfolding/utils ${SRC}/unfolding/circlepacking
- ${SRC}/topology ${SRC}/display ${SRC}/cimg_plugins ${SRC}/apps/medical
- ${SRC}/unfolding/abf ${SRC}/include/opennl/extern ${SRC}/include/opennl/intern
- ${SRC}/include/opennl/superlu)
- SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -Wunused -pedantic -ansi")
- #look for libraries
- FIND_PACKAGE(X11)
- FIND_PACKAGE(Threads)
- FIND_PACKAGE(PNG)
- FIND_PACKAGE(JPEG)
- FIND_PACKAGE(GLUT)
- FIND_PACKAGE(LibXml2)
- FIND_PACKAGE(SWIG)
- INCLUDE(${UnfoldSoftware_CMAKE_DIR}/FindPOPT.cmake)
- INCLUDE(${UnfoldSoftware_CMAKE_DIR}/FindCIMG.cmake)
- IF(NOT CIMG_FOUND)
- MESSAGE(FATAL_ERROR "CImg is not available. Precompilation failed")
- ENDIF(NOT CIMG_FOUND)
- IF(NOT POPT_FOUND)
- MESSAGE(FATAL_ERROR "libpopt is not available. Precompilation failed")
- ENDIF(NOT POPT_FOUND)
- INCLUDE_DIRECTORIES(${CIMG_INCLUDE_DIR} ${POPT_INCLUDE_DIR})
- SET(LIBRARIES_X ${X11_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT})
- SET(LIBRARIES_SOFTWARE ${POPT_LIBRARIES})
- #add conditional include directories
- IF(LIBXML2_LIBRARIES)
- INCLUDE_DIRECTORIES(${LIBXML2_INCLUDE_DIR})
- ELSE(LIBXML2_LIBRARIES)
- MESSAGE(STATUS "libxml2 not found. script interpreter will not be compiled")
- ENDIF(LIBXML2_LIBRARIES)
- IF(X11_FOUND AND CMAKE_HAVE_THREADS_LIBRARY)
- INCLUDE_DIRECTORIES(${X11_INCLUDE_DIR})
- ELSE(X11_FOUND AND CMAKE_HAVE_THREADS_LIBRARY)
- MESSAGE(STATUS "X11 not found. No graphical include")
- ENDIF(X11_FOUND AND CMAKE_HAVE_THREADS_LIBRARY)
- #--------------------------#
- # copy script
- IF(LIBXML2_LIBRARIES)
- EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -E copy
- ${UnfoldSoftware_SOURCE_DIR}/utils/ScriptSchema.xsd
- ${EXECUTABLE_OUTPUT_PATH}/ScriptSchema.xsd)
- ENDIF(LIBXML2_LIBRARIES)
- #--------------------------#
- # Libraries
- IF(CIMG_FOUND)
- SET(CPP_UnfoldingTools_LIST ${SRC}/utils/files/MeshLoader.cpp
- ${SRC}/utils/files/MeshLoaderVRML.cpp ${SRC}/utils/files/FileTools.cpp
- ${SRC}/topology/Mesh.cpp ${SRC}/topology/MeshManipulator.cpp
- ${SRC}/topology/MeshPart.cpp ${SRC}/topology/MeshCut.cpp
- ${SRC}/unfolding/circlepacking/CPMethod.cpp ${SRC}/display/Display3D.cpp
- ${SRC}/topology/MeshPathes.cpp ${SRC}/topology/MeshPatches.cpp
- ${SRC}/display/DDisplay.cpp ${SRC}/display/DDScrollBar.cpp
- ${SRC}/display/DDBox.cpp ${SRC}/utils/MeshBExpr.cpp
- ${SRC}/display/DisplayGL.cpp ${SRC}/topology/MeshUncut.cpp
- ${SRC}/algos/Triangle.cpp ${SRC}/algos/ClusterGenerator.cpp
- ${SRC}/algos/Vertex.cpp ${SRC}/utils/files/MeshSaver.cpp
- ${SRC}/utils/SurfaceToolbox.cpp ${SRC}/utils/Messages.cpp
- ${SRC}/topology/Length.cpp ${SRC}/utils/Exception.cpp
- ${SRC}/utils/files/FileExceptions.cpp ${SRC}/algos/VerticesManipulator.cpp
- ${SRC}/utils/ColorChooser.cpp ${SRC}/topology/MeshList.cpp
- ${SRC}/utils/files/MeshSaverVRML.cpp ${SRC}/topology/SpaceSpliter.cpp
- ${SRC}/utils/files/MeshLoaderXYZ.cpp ${SRC}/utils/XMLSimpleNode.cpp
- ${SRC}/algos/MeshPrune.cpp ${SRC}/utils/IndentManager.cpp
- ${SRC}/apps/medical/Electrodes.cpp ${SRC}/topology/MeshRectPatcher.cpp
- ${SRC}/topology/Polygon.cpp ${SRC}/unfolding/Mapping2D3DList.cpp
- ${SRC}/unfolding/Mapping2D3D.cpp ${SRC}/unfolding/abf/ABFMethod.cpp
- ${SRC}/utils/PointSelector.cpp ${SRC}/utils/StringManipulation.cpp
- ${SRC}/topology/PointModifier.cpp ${SRC}/unfolding/MappingRegistration.cpp
- ${SRC}/topology/MeshMatcher.cpp ${SRC}/unfolding/MappingComparator.cpp
- ${SRC}/topology/MeshComparator.cpp ${SRC}/unfolding/MultiscaleUnfolding.cpp
- ${SRC}/unfolding/UnfoldingMethod.cpp ${SRC}/algos/MeshSmoother.cpp
- ${SRC}/topology/Mesh.h.gch)
- # adding OpenNL files
- FILE(GLOB CPP_OpenNL_LIST ${SRC}/include/opennl/intern/*.c ${SRC}/include/opennl/superlu/*.c)
- SET(CPP_UnfoldingTools_LIST ${CPP_UnfoldingTools_LIST} ${CPP_OpenNL_LIST})
- ADD_LIBRARY(UnfoldingTools SHARED ${CPP_UnfoldingTools_LIST})
- ENDIF(CIMG_FOUND)
- #--------------------------#
- # Flags
- IF(LIBXML2_LIBRARIES)
- SET(UnfoldingTools_flags "${UnfoldingTools_flags} -DUSE_LIBXML")
- SET(python_binding_flags "${python_binding_flags} -DUSE_LIBXML")
- ENDIF(LIBXML2_LIBRARIES)
- IF(GLUT_FOUND)
- SET(UnfoldingTools_flags "${UnfoldingTools_flags} -DUSE_GL")
- SET(python_binding_flags "${python_binding_flags} -DUSE_GL")
- SET(LIBRARIES_SOFTWARE ${LIBRARIES_SOFTWARE} ${GLUT_LIBRARIES})
- ENDIF(GLUT_FOUND)
- IF(X11_FOUND AND CMAKE_HAVE_THREADS_LIBRARY)
- SET(UnfoldingTools_flags "${UnfoldingTools_flags} -DUSE_X")
- SET(python_binding_flags "${python_binding_flags} -DUSE_X")
- SET(LIBRARIES_CIMG ${LIBRARIES_CIMG} ${LIBRARIES_X})
- ENDIF(X11_FOUND AND CMAKE_HAVE_THREADS_LIBRARY)
- IF(LIBXML2_LIBRARIES)
- SET(LIBRARIES_SOFTWARE ${LIBRARIES_SOFTWARE} ${LIBXML2_LIBRARIES})
- ENDIF(LIBXML2_LIBRARIES)
- SET_TARGET_PROPERTIES(UnfoldingTools PROPERTIES COMPILE_FLAGS "${SHARED_FLAGS} ${UnfoldingTools_flags}")
- #--------------------------#
- # Softwares
- IF(POPT_FOUND AND CIMG_FOUND)
- # meshViewer
- ADD_EXECUTABLE(meshViewer ${SRC}/meshViewer.cpp)
- SET_TARGET_PROPERTIES(meshViewer PROPERTIES COMPILE_FLAGS "${SHARED_FLAGS} ${UnfoldingTools_flags}")
- TARGET_LINK_LIBRARIES(meshViewer UnfoldingTools ${LIBRARIES_CIMG} ${LIBRARIES_SOFTWARE})
- # maskViewer
- ADD_EXECUTABLE(maskViewer ${SRC}/maskViewer.cpp)
- SET_TARGET_PROPERTIES(maskViewer PROPERTIES COMPILE_FLAGS "${SHARED_FLAGS} ${UnfoldingTools_flags}")
- TARGET_LINK_LIBRARIES(maskViewer UnfoldingTools ${LIBRARIES_CIMG} ${LIBRARIES_SOFTWARE})
- # maskSaver
- ADD_EXECUTABLE(maskSaver ${SRC}/maskSaver.cpp)
- SET_TARGET_PROPERTIES(maskSaver PROPERTIES COMPILE_FLAGS "${SHARED_FLAGS} ${UnfoldingTools_flags}")
- TARGET_LINK_LIBRARIES(maskSaver UnfoldingTools ${LIBRARIES_CIMG} ${LIBRARIES_SOFTWARE})
- # simpleExample
- ADD_EXECUTABLE(simpleExample ${SRC}/simpleExample.cpp)
- SET_TARGET_PROPERTIES(simpleExample PROPERTIES COMPILE_FLAGS "${SHARED_FLAGS} ${UnfoldingTools_flags}")
- TARGET_LINK_LIBRARIES(simpleExample UnfoldingTools ${LIBRARIES_CIMG} ${LIBRARIES_SOFTWARE})
- # meshCropDisc
- ADD_EXECUTABLE(meshCropDisc ${SRC}/meshCropDisc.cpp)
- SET_TARGET_PROPERTIES(meshCropDisc PROPERTIES COMPILE_FLAGS "${SHARED_FLAGS} ${UnfoldingTools_flags}")
- TARGET_LINK_LIBRARIES(meshCropDisc UnfoldingTools ${LIBRARIES_CIMG} ${LIBRARIES_SOFTWARE})
- # distortImage
- ADD_EXECUTABLE(distortImage ${SRC}/distortImage.cpp)
- SET_TARGET_PROPERTIES(distortImage PROPERTIES COMPILE_FLAGS "${SHARED_FLAGS} ${UnfoldingTools_flags}")
- TARGET_LINK_LIBRARIES(distortImage UnfoldingTools ${LIBRARIES_CIMG} ${LIBRARIES_SOFTWARE})
- # circleSetConverter
- ADD_EXECUTABLE(circleSetConverter ${SRC}/circleSetConverter.cpp)
- SET_TARGET_PROPERTIES(circleSetConverter PROPERTIES COMPILE_FLAGS "${SHARED_FLAGS} ${UnfoldingTools_flags}")
- TARGET_LINK_LIBRARIES(circleSetConverter UnfoldingTools ${LIBRARIES_CIMG} ${LIBRARIES_SOFTWARE})
- # meshUnfolder
- ADD_EXECUTABLE(meshUnfolder ${SRC}/meshUnfolder.cpp)
- SET_TARGET_PROPERTIES(meshUnfolder PROPERTIES COMPILE_FLAGS "${SHARED_FLAGS} ${UnfoldingTools_flags}")
- TARGET_LINK_LIBRARIES(meshUnfolder UnfoldingTools ${LIBRARIES_CIMG} ${LIBRARIES_SOFTWARE})
- # meshTriangulator
- ADD_EXECUTABLE(meshTriangulator ${SRC}/meshTriangulator.cpp)
- SET_TARGET_PROPERTIES(meshTriangulator PROPERTIES COMPILE_FLAGS "${SHARED_FLAGS} ${UnfoldingTools_flags}")
- TARGET_LINK_LIBRARIES(meshTriangulator UnfoldingTools ${LIBRARIES_CIMG} ${LIBRARIES_SOFTWARE})
- # circleSetViewer
- ADD_EXECUTABLE(circleSetViewer ${SRC}/circleSetViewer.cpp)
- SET_TARGET_PROPERTIES(circleSetViewer PROPERTIES COMPILE_FLAGS "${SHARED_FLAGS} ${UnfoldingTools_flags}")
- TARGET_LINK_LIBRARIES(circleSetViewer UnfoldingTools ${LIBRARIES_CIMG} ${LIBRARIES_SOFTWARE})
- # mappingViewer
- ADD_EXECUTABLE(mappingViewer ${SRC}/mappingViewer.cpp)
- SET_TARGET_PROPERTIES(mappingViewer PROPERTIES COMPILE_FLAGS "${SHARED_FLAGS} ${UnfoldingTools_flags}")
- TARGET_LINK_LIBRARIES(mappingViewer UnfoldingTools ${LIBRARIES_CIMG} ${LIBRARIES_SOFTWARE})
- # meshInfos
- ADD_EXECUTABLE(meshInfos ${SRC}/meshInfos.cpp)
- TARGET_LINK_LIBRARIES(meshInfos UnfoldingTools ${LIBRARIES_CIMG} ${LIBRARIES_SOFTWARE})
- # meshSelector
- ADD_EXECUTABLE(meshSelector ${SRC}/meshSelector.cpp)
- SET_TARGET_PROPERTIES(meshSelector PROPERTIES COMPILE_FLAGS "${SHARED_FLAGS} ${UnfoldingTools_flags}")
- TARGET_LINK_LIBRARIES(meshSelector UnfoldingTools ${LIBRARIES_CIMG} ${LIBRARIES_SOFTWARE})
- # meshCutter
- ADD_EXECUTABLE(meshCutter ${SRC}/meshCutter.cpp)
- SET_TARGET_PROPERTIES(meshCutter PROPERTIES COMPILE_FLAGS "${SHARED_FLAGS} ${UnfoldingTools_flags}")
- TARGET_LINK_LIBRARIES(meshCutter UnfoldingTools ${LIBRARIES_CIMG} ${LIBRARIES_SOFTWARE})
- # meshPatcher
- ADD_EXECUTABLE(meshPatcher ${SRC}/meshPatcher.cpp)
- SET_TARGET_PROPERTIES(meshPatcher PROPERTIES COMPILE_FLAGS "${SHARED_FLAGS} ${UnfoldingTools_flags}")
- TARGET_LINK_LIBRARIES(meshPatcher UnfoldingTools ${LIBRARIES_CIMG} ${LIBRARIES_SOFTWARE})
- # imageViewer
- ADD_EXECUTABLE(imageViewer ${SRC}/imageViewer.cpp)
- SET_TARGET_PROPERTIES(imageViewer PROPERTIES COMPILE_FLAGS "${SHARED_FLAGS} ${UnfoldingTools_flags}")
- TARGET_LINK_LIBRARIES(imageViewer UnfoldingTools ${LIBRARIES_CIMG} ${LIBRARIES_SOFTWARE})
- # computeBarycenter
- ADD_EXECUTABLE(computeBarycenter ${SRC}/computeBarycenter.cpp)
- SET_TARGET_PROPERTIES(computeBarycenter PROPERTIES COMPILE_FLAGS "${SHARED_FLAGS} ${UnfoldingTools_flags}")
- TARGET_LINK_LIBRARIES(computeBarycenter UnfoldingTools ${LIBRARIES_CIMG} ${LIBRARIES_SOFTWARE})
- # meshPruner
- ADD_EXECUTABLE(meshPruner ${SRC}/meshPruner.cpp)
- SET_TARGET_PROPERTIES(meshPruner PROPERTIES COMPILE_FLAGS "${SHARED_FLAGS} ${UnfoldingTools_flags}")
- TARGET_LINK_LIBRARIES(meshPruner UnfoldingTools ${LIBRARIES_CIMG} ${LIBRARIES_SOFTWARE})
- # example
- ADD_EXECUTABLE(example ${SRC}/example.cpp)
- SET_TARGET_PROPERTIES(example PROPERTIES COMPILE_FLAGS "${SHARED_FLAGS} ${UnfoldingTools_flags}")
- TARGET_LINK_LIBRARIES(example UnfoldingTools ${LIBRARIES_CIMG} ${LIBRARIES_SOFTWARE})
- # meshSmoother
- ADD_EXECUTABLE(meshSmoother ${SRC}/meshSmoother.cpp)
- SET_TARGET_PROPERTIES(meshSmoother PROPERTIES COMPILE_FLAGS "${SHARED_FLAGS} ${UnfoldingTools_flags}")
- TARGET_LINK_LIBRARIES(meshSmoother UnfoldingTools ${LIBRARIES_CIMG} ${LIBRARIES_SOFTWARE})
- # meshNoiser
- ADD_EXECUTABLE(meshNoiser ${SRC}/meshNoiser.cpp)
- TARGET_LINK_LIBRARIES(meshNoiser UnfoldingTools ${LIBRARIES_CIMG} ${LIBRARIES_SOFTWARE})
- IF(LIBXML2_LIBRARIES)
- # mScript
- ADD_EXECUTABLE(mScript ${SRC}/mScript.cpp ${SRC}/utils/ScriptInterpreter.cpp)
- TARGET_LINK_LIBRARIES(mScript UnfoldingTools ${LIBRARIES_CIMG} ${LIBRARIES_SOFTWARE})
- ENDIF(LIBXML2_LIBRARIES)
- IF(SWIG_DIR)
- # python binding
- SET(UnfoldSoftware_LIBRARY_DIR ${PYTHON_OUTPUT_PATH})
- SET(CMAKE_CXX_FLAGS ${python_binding_flags})
- SET(CMAKE_SWIG_OUTDIR ${PYTHON_OUTPUT_PATH})
- INCLUDE(${SWIG_USE_FILE})
- FIND_PACKAGE(PythonLibs)
- INCLUDE_DIRECTORIES(${PYTHON_INCLUDE_PATH})
- SET(CMAKE_SWIG_FLAGS "")
- SET_SOURCE_FILES_PROPERTIES(src/binding/UnfoldingTools.i PROPERTIES CPLUSPLUS ON)
- SET_SOURCE_FILES_PROPERTIES(src/binding/UnfoldingTools.i PROPERTIES SWIG_FLAGS "")
- SWIG_ADD_MODULE(unfolding_tools python src/binding/UnfoldingTools.i)
- SWIG_LINK_LIBRARIES(unfolding_tools ${PYTHON_LIBRARIES} UnfoldingTools ${LIBRARIES_CIMG} ${LIBRARIES_SOFTWARE})
- ENDIF(SWIG_DIR)
- ENDIF(POPT_FOUND AND CIMG_FOUND)
- #--------------------------#
- # Documentation
- FIND_PACKAGE(Doxygen)
- IF(DOXYGEN)
- SET(HTML_DIR ${UnfoldSoftware_DOC_DIR}/html)
- MAKE_DIRECTORY(${HTML_DIR})
- SET(UnfoldSoftware_DOCUMENTATION_INPUT_COMMON ".")
- CONFIGURE_FILE(${UnfoldSoftware_SOURCE_DIR}/doxygen.config.in ${UnfoldSoftware_SOURCE_DIR}/doxygen.config IMMEDIATE)
- ADD_CUSTOM_TARGET(doc ${DOXYGEN} ${UnfoldSoftware_SOURCE_DIR}/doxygen.config)
- ENDIF(DOXYGEN)
- #-------------------------#
- # Edit
- ADD_CUSTOM_TARGET(edit emacs src/binding/*.i `find python/ -name "[!u]*.py"` `find . -name \"*.h\"` `find . -name \"*.cpp\"` ${CIMG_INCLUDE_DIR}/CImg.h&)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement