| name | build-systems |
| version | 3.0.0 |
| description | Production-grade skill for C++ build infrastructure. Covers CMake, Make, Ninja, package managers (Conan, vcpkg), cross-platform builds, and CI/CD integration.
|
| sasmp_version | 1.3.0 |
| skill_version | 3.0.0 |
| bonded_agent | 04-build-engineer |
| bond_type | PRIMARY_BOND |
| category | development |
| parameters | {"build_system":{"type":"string","required":false,"enum":["cmake","make","ninja","meson","bazel"],"default":"cmake","description":"Build system to use"},"package_manager":{"type":"string","required":false,"enum":["conan","vcpkg","cpm","fetchcontent"],"description":"Package manager for dependencies"},"target_platform":{"type":"array","required":false,"items":{"type":"string","enum":["linux","windows","macos","ios","android"]},"description":"Target platforms for build"},"project_type":{"type":"string","required":false,"enum":["executable","static_library","shared_library","header_only"],"description":"Type of project output"}} |
| error_handling | {"retry_logic":{"max_attempts":3,"backoff":"exponential","initial_delay_ms":1000,"max_delay_ms":16000,"jitter":true},"fallback":{"on_build_failure":"analyze_error_output","on_dependency_not_found":"try_alternative_package_manager","on_linker_error":"check_library_paths","on_cmake_error":"validate_configuration"},"validation":{"check_cmake_minimum_version":true,"verify_compiler_compatibility":true,"validate_target_dependencies":true}} |
Build Systems Skill
Production-Grade Development Skill | C++ Build Infrastructure
Master C++ build systems, package management, and CI/CD integration.
Modern CMake Patterns
Project Structure
# CMakeLists.txt
cmake_minimum_required(VERSION 3.20)
project(MyProject
VERSION 1.0.0
DESCRIPTION "A modern C++ project"
LANGUAGES CXX
)
# ────────────────────────────────────────────────────────────────
# Global Settings
# ────────────────────────────────────────────────────────────────
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
# ────────────────────────────────────────────────────────────────
# Options
# ────────────────────────────────────────────────────────────────
option(BUILD_TESTING "Build unit tests" ON)
option(BUILD_DOCS "Build documentation" OFF)
option(ENABLE_SANITIZERS "Enable sanitizers in debug builds" ON)
option(ENABLE_COVERAGE "Enable code coverage" OFF)
# ────────────────────────────────────────────────────────────────
# Compiler Warnings Interface
# ────────────────────────────────────────────────────────────────
add_library(project_warnings INTERFACE)
target_compile_options(project_warnings INTERFACE
$<$<CXX_COMPILER_ID:GNU,Clang>:
-Wall -Wextra -Wpedantic -Werror
-Wshadow -Wnon-virtual-dtor -Wcast-align
-Wunused -Woverloaded-virtual -Wconversion
>
$<$<CXX_COMPILER_ID:MSVC>:
/W4 /WX /permissive-
>
)
# ────────────────────────────────────────────────────────────────
# Sanitizers (Debug builds)
# ────────────────────────────────────────────────────────────────
add_library(project_sanitizers INTERFACE)
if(ENABLE_SANITIZERS AND CMAKE_BUILD_TYPE STREQUAL "Debug")
target_compile_options(project_sanitizers INTERFACE
-fsanitize=address,undefined
-fno-omit-frame-pointer
)
target_link_options(project_sanitizers INTERFACE
-fsanitize=address,undefined
)
endif()
Target-Based CMake
# Library target
add_library(mylib
src/core.cpp
src/utils.cpp
)
target_include_directories(mylib
PUBLIC
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
$<INSTALL_INTERFACE:include>
PRIVATE
${CMAKE_CURRENT_SOURCE_DIR}/src
)
target_link_libraries(mylib
PUBLIC fmt::fmt
PRIVATE project_warnings project_sanitizers
)
# Executable target
add_executable(myapp src/main.cpp)
target_link_libraries(myapp PRIVATE mylib project_warnings)
Dependency Management
FetchContent (CMake 3.14+)
include(FetchContent)
FetchContent_Declare(
fmt
GIT_REPOSITORY https://github.com/fmtlib/fmt.git
GIT_TAG 10.2.1
GIT_SHALLOW TRUE
)
FetchContent_Declare(
googletest
GIT_REPOSITORY https://github.com/google/googletest.git
GIT_TAG v1.14.0
)
FetchContent_MakeAvailable(fmt googletest)
target_link_libraries(mylib PRIVATE fmt::fmt)
target_link_libraries(mytest PRIVATE GTest::gtest_main)