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