snippet cmake "CMakeFiles Stub" b
-cmake_minimum_required(VERSION 3.5)
+cmake_minimum_required(VERSION `cmake --version | grep -Po '\d+\.\d+'`)
project(${1:ProjectName})
-# find_package(Boost REQUIRED)
+set(CMAKE_CXX_STANDARD 17)
+set(CMAKE_CXX_STANDARD_REQUIRED TRUE)
+set(CMAKE_C_STANDARD 17)
+set(CMAKE_C_STANDARD_REQUIRED TRUE)
-add_executable(\${PROJECT_NAME}
- ${1:main.cpp}
+add_executable(${2:$1}
+ ${3:main.cpp}
)
-set_target_properties(\${PROJECT_NAME}
- PROPERTIES CXX_STANDARD 14
+target_link_libraries($2
)
+endsnippet
-target_link_libraries(\${PROJECT_NAME}
-)
+snippet pprint "Pretty print variables" b
+include(CMakePrintHelpers)
+cmake_print_variables(${1:var1})
endsnippet
snippet qt5 "Find Qt5 Modules" b
endsnippet
snippet lib
-add_library(${1:lib}
- ${${0:SRCS}}
+add_library(${1:lib})
+add_library(\${PROJECT_NAME}::$1 ALIAS $1)
+target_sources($1 PRIVATE
+ $2
+)
+target_link_libraries($1
+ PUBLIC
+ $3
+ PRIVATE
+ $4
)
endsnippet
snippet bin
add_executable(${1:bin})
+target_sources($1 PRIVATE
+ $2
+)
+target_link_libraries($1 PRIVATE
+ $3
+)
endsnippet
snippet set
${3:COMPILE_FLAGS} ${0:"-O3 -Wall -pedantic"}
)
endsnippet
+
+snippet debug_targets "Debug targets" b
+set(CMAKE_DEBUG_TARGET_PROPERTIES
+ INCLUDE_DIRECTORIES
+ COMPILE_DEFINITIONS
+ COMPILE_OPTIONS
+ COMPILE_FEATURES
+ AUTOUIC_OPTIONS
+ SOURCES
+ POSITION_INDEPENDENT_CODE
+)
+endsnippet
+
+snippet FPP "FPP Copyright" b
+# Copyright © Focal Point Positioning Limited `!v strftime("%Y")`. All Rights Reserved.
+# This code is the copyright of Focal Point Positioning Limited and
+# cannot be used, copied or distributed without the express written
+# permission of Focal Point Positioning Limited.
+${0}
+endsnippet
+
+snippet FetchContent_url "FetchContent" b
+FetchContent_Declare(${1:name}
+ URL ${2:https://example.com/project.tar.gz}
+)
+FetchContent_MakeAvailable(${1/\w+/\L$0\E/})
+endsnippet
+
+snippet FetchContent_git "FetchContent" b
+FetchContent_Declare(${1:name}
+ GIT_REPOSITORY ${2:https://github.com/${3:user/repo}}
+)
+FetchContent_MakeAvailable(${1/\w+/\L$0\E/})
+endsnippet