Lemma is an Electromagnetics API
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

CMakeLists.txt 3.1KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. cmake_minimum_required (VERSION 2.8.7)
  2. project (Lemma)
  3. ###################
  4. # External Projects
  5. ###################
  6. include(ExternalProject)
  7. # Eigen, this header-library is used extensively for linear algebra, matrices, and arrays
  8. # Mercurial (hg) repo pull, Would it be better to just download latest stable?
  9. #ExternalProject_Add(EIGEN
  10. # HG_REPOSITORY "https://bitbucket.org/eigen/eigen/"
  11. # UPDATE_COMMAND ""
  12. # PATCH_COMMAND ""
  13. # PREFIX ${CMAKE_CURRENT_BINARY_DIR}/external/eigen
  14. # CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH=${CMAKE_INSTALL_PREFIX}
  15. #)
  16. # Stable Eigen, requires manual updating when new releases, but lighter weight.
  17. ExternalProject_Add(EIGEN
  18. URL "http://bitbucket.org/eigen/eigen/get/3.2.7.tar.gz"
  19. PREFIX ${CMAKE_CURRENT_BINARY_DIR}/external/eigen
  20. CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH=${CMAKE_INSTALL_PREFIX}
  21. )
  22. # Yaml-cpp, this library is used extensively for serialisation of classes (class persistence)
  23. ExternalProject_Add(YAML-CPP
  24. GIT_REPOSITORY "https://github.com/jbeder/yaml-cpp.git"
  25. GIT_TAG "master"
  26. UPDATE_COMMAND ""
  27. PATCH_COMMAND ""
  28. PREFIX ${CMAKE_CURRENT_BINARY_DIR}/external/yaml-cpp
  29. CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH=${CMAKE_INSTALL_PREFIX}
  30. )
  31. # tinyxml2, this library is used for XML IO
  32. ExternalProject_Add(TINYXML2
  33. GIT_REPOSITORY "https://github.com/leethomason/tinyxml2.git"
  34. GIT_TAG "master"
  35. UPDATE_COMMAND ""
  36. PATCH_COMMAND ""
  37. PREFIX ${CMAKE_CURRENT_BINARY_DIR}/external/tinyxml2
  38. CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH=${CMAKE_INSTALL_PREFIX}
  39. )
  40. option(MATIO_SUPPORT "MATIO library support for MATLAB .mat files" ON)
  41. if ( MATIO_SUPPORT )
  42. # matio, this library is used for MATLAB file IO
  43. ExternalProject_ADD(MATIO
  44. GIT_REPOSITORY "git://git.code.sf.net/p/matio/matio"
  45. GIT_TAG "master"
  46. UPDATE_COMMAND ""
  47. PATCH_COMMAND ""
  48. PREFIX ${CMAKE_CURRENT_BINARY_DIR}/external/matio
  49. #CONFIGURE_COMMAND ${CMAKE_CURRENT_BINARY_DIR}/external/matio/src/MATIO/autogen.sh && configure
  50. CONFIGURE_COMMAND ./autogen.sh && ./configure --prefix=${CMAKE_INSTALL_PREFIX}
  51. BUILD_IN_SOURCE 1
  52. BUILD_COMMAND ${MAKE}
  53. )
  54. endif()
  55. #####################
  56. # Lemma Configuration
  57. #####################
  58. project(LEMMA_CXX)
  59. # We don't Build VTK, it is too much.
  60. find_package(VTK 6 REQUIRED NO_MODULE)
  61. include(${VTK_USE_FILE})
  62. set(LEMMA_VERSION_MAJOR "0")
  63. set(LEMMA_VERSION_MINOR "0")
  64. set(LEMMA_VERSION_PATCH "0")
  65. #set(LEMMA_VERSION "${LEMMA_CPP_VERSION_MAJOR}_${LEMMA_CPP_VERSION_MINOR}_${LEMMA_CPP_VERSION_PATCH}")
  66. configure_file (
  67. "${PROJECT_SOURCE_DIR}/include/LemmaConfig.h.in"
  68. "${PROJECT_BINARY_DIR}/include/LemmaConfig.h"
  69. )
  70. include_directories("${PROJECT_BINARY_DIR}/include")
  71. include_directories ("${PROJECT_SOURCE_DIR}/LemmaCore/include")
  72. include_directories ("${CMAKE_INSTALL_PREFIX}/include/eigen3")
  73. include_directories ("${CMAKE_INSTALL_PREFIX}/include/")
  74. link_directories ("${CMAKE_INSTALL_PREFIX}/lib/")
  75. add_subdirectory (LemmaCore)
  76. # TODO add compiler specific instructions
  77. add_compile_options(-std=c++11)
  78. include_directories(${CMAKE_INSTALL_PREFIX}/include)
  79. add_executable(Hello "${PROJECT_SOURCE_DIR}/src/test.cpp")
  80. target_link_libraries(Hello lemmacore)
  81. add_dependencies(Hello YAML-CPP)