FreeCAD
48 строк · 2.0 Кб
1macro(SetupLibFmt)
2
3# This internet check idea is borrowed from:
4# https://stackoverflow.com/questions/62214621/how-to-check-for-internet-connection-with-cmake-automatically-prevent-fails-if
5
6if(FREECAD_USE_EXTERNAL_FMT)
7find_package(fmt QUIET)
8endif()
9
10if(fmt_FOUND)
11message(STATUS "find_package() was used to locate fmt version ${fmt_VERSION}")
12else()
13
14message(STATUS "Checking for connection to GitHub...")
15if (WIN32)
16set(ping_command "ping /n 1 /w 3 github.com")
17else()
18set(ping_command "ping -c 1 -W 3 github.com")
19endif()
20execute_process(
21COMMAND ${ping_command}
22RESULT_VARIABLE NO_CONNECTION
23)
24if(NO_CONNECTION GREATER 0)
25set(FETCHCONTENT_UPDATES_DISCONNECTED ON)
26message(WARNING "NO INTERNET CONNECTION: Using disconnected mode for FetchContent updates")
27else()
28message(STATUS "GitHub connection established for FetchContent")
29set(FETCHCONTENT_UPDATES_DISCONNECTED OFF)
30endif()
31
32include(FetchContent)
33if(${CMAKE_VERSION} VERSION_GREATER_EQUAL "3.24.0")
34cmake_policy(SET CMP0135 NEW)
35endif()
36FetchContent_Declare(fmt
37URL https://github.com/fmtlib/fmt/archive/refs/tags/9.1.0.zip
38URL_MD5 e6754011ff56bfc37631fcc90961e377
39)
40FetchContent_MakeAvailable(fmt)
41set_target_properties(fmt PROPERTIES POSITION_INDEPENDENT_CODE ON)
42if(${fmt_POPULATED})
43message(STATUS "fmt was downloaded using FetchContent into ${fmt_SOURCE_DIR}")
44else()
45message(ERROR "Failed to install the fmt library")
46endif()
47endif()
48endmacro()
49