Resolve variables with CMake

Structure

cmake_example/
├── CMakeLists.txt
├── config.hpp.in
└── main.cpp

Files

CMakeLists.txt

cmake_minimum_required(VERSION 3.10)
project(cmake_example)

set(MY_CUSTOM_MESSAGE "Hello from CMake")

configure_file(
    ${CMAKE_CURRENT_SOURCE_DIR}/config.hpp.in
    ${CMAKE_CURRENT_BINARY_DIR}/config.hpp)

add_executable(${PROJECT_NAME} main.cpp)

target_include_directories(${PROJECT_NAME}
    PRIVATE ${CMAKE_CURRENT_BINARY_DIR})

config.hpp.in

#pragma once

#define MY_MESSAGE "@MY_CUSTOM_MESSAGE@"

main.cpp

#include "config.hpp"
#include <iostream>

int main()
{
    std::cout << "Message: " << MY_MESSAGE << std::endl;
    return 0;
}

Execution

$ cmake -S"src" -B"build"
$ cmake --build build
$ ./build/cmake_example
Message: Hello from CMake