## Comments

    # This is a comment

## Keywords

    add_library(foo main.cpp)
    target_link_libraries(foo bar)

## Functions

    user_defined_function()
    another_custom_function(argument)

## Variables

    CMAKE_COMPILER_IS_GNUG77
    CMAKE_COMPILE_PDB_OUTPUT_DIRECTORY
    CMAKE_COMPILE_PDB_OUTPUT_DIRECTORY_WHATEVER
    CMAKE_CONFIGURATION_TYPES
    CMAKE_CPACK_COMMAND
    CMAKE_CROSSCOMPILING
    CMAKE_CROSSCOMPILING_EMULATOR
    CMAKE_CTEST_COMMAND
    CMAKE_CUDA_EXTENSIONS
    CMAKE_CUDA_HOST_COMPILER
    CMAKE_CUDA_SEPARABLE_COMPILATION
    CMAKE_CUDA_STANDARD
    CMAKE_CUDA_STANDARD_REQUIRED
    "${INSIDE_STRING}"
    "${PROPER}chaining${VARIABLES}"

## Properties

    CUDA_STANDARD
    CUDA_STANDARD_REQUIRED
    CXX_EXTENSIONS
    CXX_STANDARD
    cxx_std_17
    cxx_variadic_templates

## Strings

    "A string"
        "A multi
        line
        string"
        "A ${VARIABLE} insde a string"

## Full example

    cmake_minimum_required(VERSION 3.13)

    project(crypto)

    add_library(base INTERFACE)
    target_compile_features(base INTERFACE
        cxx_std_17
        )

    add_subdirectory(helpers)
    add_subdirectory(msg)

    add_library(analyzers-obj OBJECT
        CryptoAnalyzer.cpp
        )

    target_include_directories(analyzers-obj
        PUBLIC
            ${CMAKE_CURRENT_SOURCE_DIR}
        )

    find_package(predi REQUIRED)
    target_link_libraries(analyzers-obj
        PUBLIC
            base
            predi::predi
            crypto::helpers
        )

    set_target_properties(analyzers-obj
        PROPERTIES
            POSITION_INDEPENDENT_CODE ON
        )

    add_library(analyzers SHARED
        $<TARGET_OBJECTS:analyzers-obj>
        )

    target_link_libraries(analyzers PUBLIC analyzers-obj)

    add_executable(crypto
        main.cpp
        )

    target_link_libraries(crypto
        PUBLIC
            analyzers
        PRIVATE
            base
            messages
        )

    enable_testing()
    add_subdirectory(tests)