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