diff --git a/MyxCMake/find/FindMPFRCppThirdparty.cmake b/MyxCMake/find/FindMPFRCppThirdparty.cmake index 1797d17..8c7a9f1 100644 --- a/MyxCMake/find/FindMPFRCppThirdparty.cmake +++ b/MyxCMake/find/FindMPFRCppThirdparty.cmake @@ -1,7 +1,7 @@ # Подключение внешних проектов include(ExternalProject) -if(MPFR_FOUND) +if(MPFR_FOUND AND IS_DIRECTORY ${CMAKE_SOURCE_DIR}/thirdparty/mpreal) ExternalProject_Add( mpfrcpp SOURCE_DIR ${CMAKE_SOURCE_DIR}/thirdparty/mpreal @@ -9,7 +9,8 @@ if(MPFR_FOUND) CONFIGURE_COMMAND true BUILD_COMMAND true INSTALL_COMMAND ${CMAKE_COMMAND} -E copy /mpreal.h ) + + set(MPFRCPP_PREFIX ${CMAKE_BINARY_DIR} CACHE FILEPATH "" FORCE) + set(MPFRCPP_INCLUDE_DIRS ${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_INCLUDEDIR} CACHE PATH "" FORCE) endif() -set(MPFRCPP_PREFIX ${CMAKE_BINARY_DIR} CACHE FILEPATH "" FORCE) -set(MPFRCPP_INCLUDE_DIRS ${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_INCLUDEDIR} CACHE PATH "" FORCE) diff --git a/MyxCMake/functions/MyxCMakeHighPrecisionMath.cmake b/MyxCMake/functions/MyxCMakeHighPrecisionMath.cmake index 0480251..9b7a0a6 100644 --- a/MyxCMake/functions/MyxCMakeHighPrecisionMath.cmake +++ b/MyxCMake/functions/MyxCMakeHighPrecisionMath.cmake @@ -1,11 +1,13 @@ -find_package(Quadmath) -if(QUADMATH_FOUND) - add_definitions(-DHAVE_QUADMATH=1) -else() - find_package(MPFR) - if(MPFR_FOUND) - find_package(MPFRCppThirdparty) +function myx_cmake_enable_high_precision_math() + find_package(Quadmath) + if(QUADMATH_FOUND) + add_definitions(-DHAVE_QUADMATH=1) else() - message(FATAL_ERROR "Nor Quadmath, nor MPFR found.") + find_package(MPFR) + if(MPFR_FOUND) + find_package(MPFRCppThirdparty) + else() + message(FATAL_ERROR "Nor Quadmath, nor MPFR found.") + endif() endif() -endif() +endfunction()