Added scaffolding
This is from https://github.com/TheLartians/ModernCppStarter/
This commit is contained in:
parent
504e2e3170
commit
044e38732d
8 changed files with 383 additions and 0 deletions
36
cmake/CPM.cmake
Normal file
36
cmake/CPM.cmake
Normal file
|
@ -0,0 +1,36 @@
|
|||
# SPDX-FileCopyrightText: 2023 github.com/TheLartians
|
||||
#
|
||||
# SPDX-License-Identifier: CC0-1.0
|
||||
|
||||
set(CPM_DOWNLOAD_VERSION 0.37.0)
|
||||
|
||||
if(CPM_SOURCE_CACHE)
|
||||
set(CPM_DOWNLOAD_LOCATION "${CPM_SOURCE_CACHE}/cpm/CPM_${CPM_DOWNLOAD_VERSION}.cmake")
|
||||
elseif(DEFINED ENV{CPM_SOURCE_CACHE})
|
||||
set(CPM_DOWNLOAD_LOCATION "$ENV{CPM_SOURCE_CACHE}/cpm/CPM_${CPM_DOWNLOAD_VERSION}.cmake")
|
||||
else()
|
||||
set(CPM_DOWNLOAD_LOCATION "${CMAKE_BINARY_DIR}/cmake/CPM_${CPM_DOWNLOAD_VERSION}.cmake")
|
||||
endif()
|
||||
|
||||
# Expand relative path. This is important if the provided path contains a tilde (~)
|
||||
get_filename_component(CPM_DOWNLOAD_LOCATION ${CPM_DOWNLOAD_LOCATION} ABSOLUTE)
|
||||
|
||||
function(download_cpm)
|
||||
message(STATUS "Downloading CPM.cmake to ${CPM_DOWNLOAD_LOCATION}")
|
||||
file(DOWNLOAD
|
||||
https://github.com/cpm-cmake/CPM.cmake/releases/download/v${CPM_DOWNLOAD_VERSION}/CPM.cmake
|
||||
${CPM_DOWNLOAD_LOCATION}
|
||||
)
|
||||
endfunction()
|
||||
|
||||
if(NOT (EXISTS ${CPM_DOWNLOAD_LOCATION}))
|
||||
download_cpm()
|
||||
else()
|
||||
# resume download if it previously failed
|
||||
file(READ ${CPM_DOWNLOAD_LOCATION} check)
|
||||
if("${check}" STREQUAL "")
|
||||
download_cpm()
|
||||
endif()
|
||||
endif()
|
||||
|
||||
include(${CPM_DOWNLOAD_LOCATION})
|
70
cmake/tools.cmake
Normal file
70
cmake/tools.cmake
Normal file
|
@ -0,0 +1,70 @@
|
|||
# SPDX-FileCopyrightText: 2023 github.com/TheLartians
|
||||
#
|
||||
# SPDX-License-Identifier: CC0-1.0
|
||||
|
||||
# this file contains a list of tools that can be activated and downloaded on-demand each tool is
|
||||
# enabled during configuration by passing an additional `-DUSE_<TOOL>=<VALUE>` argument to CMake
|
||||
|
||||
# only activate tools for top level project
|
||||
if(NOT PROJECT_SOURCE_DIR STREQUAL CMAKE_SOURCE_DIR)
|
||||
return()
|
||||
endif()
|
||||
|
||||
include(${CMAKE_CURRENT_LIST_DIR}/CPM.cmake)
|
||||
|
||||
# enables sanitizers support using the the `USE_SANITIZER` flag available values are: Address,
|
||||
# Memory, MemoryWithOrigins, Undefined, Thread, Leak, 'Address;Undefined'
|
||||
if(USE_SANITIZER OR USE_STATIC_ANALYZER)
|
||||
CPMAddPackage("gh:StableCoder/cmake-scripts#1f822d1fc87c8d7720c074cde8a278b44963c354")
|
||||
|
||||
if(USE_SANITIZER)
|
||||
include(${cmake-scripts_SOURCE_DIR}/sanitizers.cmake)
|
||||
endif()
|
||||
|
||||
if(USE_STATIC_ANALYZER)
|
||||
if("clang-tidy" IN_LIST USE_STATIC_ANALYZER)
|
||||
set(CLANG_TIDY
|
||||
ON
|
||||
CACHE INTERNAL ""
|
||||
)
|
||||
else()
|
||||
set(CLANG_TIDY
|
||||
OFF
|
||||
CACHE INTERNAL ""
|
||||
)
|
||||
endif()
|
||||
if("iwyu" IN_LIST USE_STATIC_ANALYZER)
|
||||
set(IWYU
|
||||
ON
|
||||
CACHE INTERNAL ""
|
||||
)
|
||||
else()
|
||||
set(IWYU
|
||||
OFF
|
||||
CACHE INTERNAL ""
|
||||
)
|
||||
endif()
|
||||
if("cppcheck" IN_LIST USE_STATIC_ANALYZER)
|
||||
set(CPPCHECK
|
||||
ON
|
||||
CACHE INTERNAL ""
|
||||
)
|
||||
else()
|
||||
set(CPPCHECK
|
||||
OFF
|
||||
CACHE INTERNAL ""
|
||||
)
|
||||
endif()
|
||||
|
||||
include(${cmake-scripts_SOURCE_DIR}/tools.cmake)
|
||||
|
||||
clang_tidy(${CLANG_TIDY_ARGS})
|
||||
include_what_you_use(${IWYU_ARGS})
|
||||
cppcheck(${CPPCHECK_ARGS})
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# enables CCACHE support through the USE_CCACHE flag possible values are: YES, NO or equivalent
|
||||
if(USE_CCACHE)
|
||||
CPMAddPackage("gh:TheLartians/Ccache.cmake@1.2.3")
|
||||
endif()
|
Loading…
Add table
Add a link
Reference in a new issue