← ClaudeAtlas

cmake-patternslisted

When to activate: CMake, CMakeLists.txt, target_link_libraries, find_package, FetchContent, CMakePresets, build system, install
Mattakushi432/Claude-Code-Skills-Custom-DevTools-Pack · ★ 0 · AI & Automation · score 73
Install: claude install-skill Mattakushi432/Claude-Code-Skills-Custom-DevTools-Pack
# CMake Patterns ## Modern Target-Based CMake ```cmake cmake_minimum_required(VERSION 3.25) project(MyApp VERSION 1.0.0 LANGUAGES CXX) set(CMAKE_CXX_STANDARD 23) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CXX_EXTENSIONS OFF) set(CMAKE_EXPORT_COMPILE_COMMANDS ON) # for clangd/clang-tidy # Library target add_library(mylib STATIC src/parser.cpp src/network.cpp ) target_include_directories(mylib PUBLIC include PRIVATE src) target_compile_options(mylib PRIVATE -Wall -Wextra -Wpedantic) target_compile_features(mylib PUBLIC cxx_std_23) # Executable add_executable(myapp src/main.cpp) target_link_libraries(myapp PRIVATE mylib) ``` ## find_package ```cmake # Find system libraries find_package(Threads REQUIRED) find_package(OpenSSL REQUIRED) find_package(Boost 1.82 REQUIRED COMPONENTS filesystem program_options) target_link_libraries(myapp PRIVATE Threads::Threads OpenSSL::SSL OpenSSL::Crypto Boost::filesystem Boost::program_options ) ``` ## FetchContent (Dependency Management) ```cmake include(FetchContent) FetchContent_Declare( googletest GIT_REPOSITORY https://github.com/google/googletest.git GIT_TAG v1.14.0 FIND_PACKAGE_ARGS NAMES GTest # use system install if available ) FetchContent_Declare( spdlog GIT_REPOSITORY https://github.com/gabime/spdlog.git GIT_TAG v1.13.0 ) FetchContent_MakeAvailable(googletest spdlog) target_link_libraries(mylib PRIVATE spdlog::spdlog) target_link_libraries(tests PRIV