X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=CMakeLists.txt;h=3e9783b4945d0d66b65d5cc1db9657158424e1fa;hb=HEAD;hp=b2a6a18e5fb3952074891383ece9abf21f8521a3;hpb=f287dfe5d76525d02c37224c0a09ed6277fbbb52;p=FrontAlgorithms.git diff --git a/CMakeLists.txt b/CMakeLists.txt index b2a6a18..3e9783b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,15 +1,20 @@ +## ========================================================================= +## @author Leonardo Florez Valencia +## @email florez-l@javeriana.edu.co +## ========================================================================= + cmake_minimum_required(VERSION 3.0) ## ======================== ## == Project definition == ## ======================== -set(prj_MAJ_VERSION 0) -set(prj_MIN_VERSION 1) -set(prj_REL_VERSION 0) -set(prj_VERSION "${prj_MAJ_VERSION}.${prj_MIN_VERSION}.${prj_REL_VERSION}") -set(prj_SHORT_VERSION "${prj_MAJ_VERSION}") -project(fpa VERSION ${prj_VERSION}) +set(prj_MAJ_VER 0) +set(prj_MIN_VER 1) +set(prj_REL_VER 0) +set(prj_VER "${prj_MAJ_VER}.${prj_MIN_VER}.${prj_REL_VER}") +set(prj_SHORT_VER "${prj_MAJ_VER}") +project(fpa VERSION ${prj_VER}) ## ========================== ## == Some useful policies == @@ -22,18 +27,81 @@ foreach(_p ${_policies}) endif(POLICY ${_p}) endforeach(_p) -## =============================== -## == Some basic configurations == -## =============================== +## ========================================================= +## == If working on a MacOSX, activate the use of RPATH's == +## == Furthermore: prepare the type of executables == +## ========================================================= + +set(EXECUTABLE_TYPE "" CACHE STRING "Executable linking." FORCE) +if(APPLE) + set(EXECUTABLE_TYPE "MACOSX_BUNDLE" CACHE STRING "Executable linking." FORCE) + set(CMAKE_MACOSX_RPATH true CACHE BOOL "Use RPATH's on MacOSX." FORCE) + mark_as_advanced(CMAKE_MACOSX_RPATH) +elseif(WIN32) + set(EXECUTABLE_TYPE "WIN32" CACHE STRING "Executable linking." FORCE) +endif(APPLE) +mark_as_advanced(EXECUTABLE_TYPE) + +## ======================================================================= +## == Force c++11 language version == +## == NOTE: It seems that by default on Visual Studio Compiler supports == +## == c++11, so it only need to be tested on other OS. == +## ======================================================================= + +if(NOT MSVC) + include(CheckCXXCompilerFlag) + check_cxx_compiler_flag("-std=c++11" COMPILER_SUPPORTS_CXX11) + if(COMPILER_SUPPORTS_CXX11) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") + else(COMPILER_SUPPORTS_CXX11) + check_cxx_compiler_flag("-std=c++0x" COMPILER_SUPPORTS_CXX0X) + if(COMPILER_SUPPORTS_CXX0X) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x") + else(COMPILER_SUPPORTS_CXX0X) + message( + FATAL_ERROR + "The compiler ${CMAKE_CXX_COMPILER} has no C++11 support." + ) + endif(COMPILER_SUPPORTS_CXX0X) + endif(COMPILER_SUPPORTS_CXX11) +endif(NOT MSVC) + +## =================================================== +## == Prepare header generator to build shared libs == +## =================================================== + +include(GenerateExportHeader) + +## ================================================== +## == Do not allow to build inside the source tree == +## ================================================== -include(cmake/fpaBaseConfig.cmake) +if(PROJECT_BINARY_DIR STREQUAL ${PROJECT_SOURCE_DIR}) + message(FATAL_ERROR "Building in the source tree is not allowed.") +endif(PROJECT_BINARY_DIR STREQUAL ${PROJECT_SOURCE_DIR}) -## ============== -## == Find ITK == -## ============== +## ================================================= +## == Where to put targets (executables and libs) == +## ================================================= + +set(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}) +set(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}) +mark_as_advanced( + CMAKE_BACKWARDS_COMPATIBILITY + EXECUTABLE_OUTPUT_PATH + LIBRARY_OUTPUT_PATH + ) + +## =========================================== +## == Find needed packages and dependencies == +## =========================================== find_package(ITK CONFIG REQUIRED) include(${ITK_USE_FILE}) +if(ITKVtkGlue_LOADED) + find_package(VTK CONFIG REQUIRED) + include(${VTK_USE_FILE}) +endif(ITKVtkGlue_LOADED) ## ========================= ## == Installation values == @@ -51,7 +119,7 @@ set(namespace "${PROJECT_NAME}::") ## == Build different parts == ## =========================== -subdirs(examples lib) +subdirs(appli lib tests) ## =============================== ## == Global installation rules == @@ -67,16 +135,14 @@ configure_package_config_file( INSTALL_DESTINATION "${config_install_dir}" ) install( - FILES - "${project_config}" - "${version_config}" - "${CMAKE_CURRENT_SOURCE_DIR}/cmake/fpaBaseConfig.cmake" + EXPORT "${targets_export_name}" + NAMESPACE "${namespace}" + DESTINATION "${config_install_dir}" + ) +install( + FILES "${project_config}" DESTINATION "${config_install_dir}" ) -#install( -# EXPORT "${targets_export_name}" -# NAMESPACE "${namespace}" -# DESTINATION "${config_install_dir}" -# ) ## eof - $RCSfile$ +