AimRT/cmake/GetCppToml.cmake

55 lines
1.7 KiB
CMake
Raw Permalink Normal View History

2024-09-23 16:01:31 +08:00
# Copyright (c) 2023, AgiBot Inc.
# All rights reserved.
include(FetchContent)
message(STATUS "get cpptoml...")
# fetch cpptoml
set(cpptoml_DOWNLOAD_URL
"https://github.com/skystrife/cpptoml/archive/refs/tags/v0.1.0.tar.gz"
CACHE STRING "")
if(cpptoml_LOCAL_SOURCE)
FetchContent_Declare(
cpptoml
SOURCE_DIR ${cpptoml_LOCAL_SOURCE}
OVERRIDE_FIND_PACKAGE)
else()
FetchContent_Declare(
cpptoml
URL ${cpptoml_DOWNLOAD_URL}
DOWNLOAD_EXTRACT_TIMESTAMP ON
OVERRIDE_FIND_PACKAGE)
endif()
# Wrap it in a function to restrict the scope of the variables
function(get_cpptoml)
FetchContent_GetProperties(cpptoml)
if(NOT cpptoml_POPULATED)
FetchContent_Populate(cpptoml)
file(READ ${cpptoml_SOURCE_DIR}/include/cpptoml.h CPPTOML_TMP_VAR)
string(REPLACE "#include <cstring>" "#include <limits>" CPPTOML_TMP_VAR "${CPPTOML_TMP_VAR}")
file(WRITE ${cpptoml_SOURCE_DIR}/include/cpptoml.h "${CPPTOML_TMP_VAR}")
file(READ ${cpptoml_SOURCE_DIR}/cmake/cpptomlConfig.cmake.in CPPTOML_TMP_VAR)
string(REPLACE "\n" ";" CPPTOML_TMP_VAR_LINES "${CPPTOML_TMP_VAR}")
list(LENGTH CPPTOML_TMP_VAR_LINES CPPTOML_TMP_VAR_LINES_LENGTH)
if(CPPTOML_TMP_VAR_LINES_LENGTH GREATER 1)
list(REMOVE_AT CPPTOML_TMP_VAR_LINES 0)
endif()
string(REPLACE ";" "\n" CPPTOML_TMP_VAR_LINES "${CPPTOML_TMP_VAR_LINES}")
file(WRITE ${cpptoml_SOURCE_DIR}/cmake/cpptomlConfig.cmake.in "${CPPTOML_TMP_VAR_LINES}")
file(READ ${cpptoml_SOURCE_DIR}/CMakeLists.txt CPPTOML_TMP_VAR)
string(REPLACE " ON" " OFF" CPPTOML_TMP_VAR "${CPPTOML_TMP_VAR}")
file(WRITE ${cpptoml_SOURCE_DIR}/CMakeLists.txt "${CPPTOML_TMP_VAR}")
add_subdirectory(${cpptoml_SOURCE_DIR} ${cpptoml_BINARY_DIR})
2024-09-23 16:01:31 +08:00
endif()
endfunction()
2024-09-23 16:01:31 +08:00
get_cpptoml()