| 
 | 1 | +cmake_minimum_required(VERSION 3.28)  | 
 | 2 | + | 
 | 3 | +# Create executable for the write_and_read_streams example  | 
 | 4 | +add_executable(write_and_read_streams write_and_read_streams.cpp)  | 
 | 5 | + | 
 | 6 | +# Link against sparrow-ipc and its dependencies  | 
 | 7 | +target_link_libraries(write_and_read_streams  | 
 | 8 | +    PRIVATE  | 
 | 9 | +        sparrow-ipc  | 
 | 10 | +        sparrow::sparrow  | 
 | 11 | +        arrow-testing-data   | 
 | 12 | +)  | 
 | 13 | + | 
 | 14 | +# Set C++ standard to match the main project  | 
 | 15 | +set_target_properties(write_and_read_streams  | 
 | 16 | +    PROPERTIES  | 
 | 17 | +        CXX_STANDARD 20  | 
 | 18 | +        CXX_STANDARD_REQUIRED ON  | 
 | 19 | +        CXX_EXTENSIONS OFF  | 
 | 20 | +)  | 
 | 21 | + | 
 | 22 | +# Include directories for headers  | 
 | 23 | +target_include_directories(write_and_read_streams  | 
 | 24 | +    PRIVATE  | 
 | 25 | +        ${CMAKE_SOURCE_DIR}/include  | 
 | 26 | +        ${CMAKE_BINARY_DIR}/generated  | 
 | 27 | +)  | 
 | 28 | + | 
 | 29 | +# Ensure generated flatbuffer headers are available  | 
 | 30 | +add_dependencies(write_and_read_streams generate_flatbuffers_headers)  | 
 | 31 | + | 
 | 32 | +# Optional: Copy to build directory for easy execution  | 
 | 33 | +if(WIN32)  | 
 | 34 | +    # On Windows, copy required DLLs  | 
 | 35 | +    add_custom_command(  | 
 | 36 | +        TARGET write_and_read_streams POST_BUILD  | 
 | 37 | +        COMMAND ${CMAKE_COMMAND} -E copy_if_different  | 
 | 38 | +            "$<TARGET_FILE:sparrow::sparrow>"  | 
 | 39 | +            "$<TARGET_FILE_DIR:write_and_read_streams>"  | 
 | 40 | +        COMMAND ${CMAKE_COMMAND} -E copy_if_different  | 
 | 41 | +            "$<TARGET_FILE:sparrow-ipc>"  | 
 | 42 | +            "$<TARGET_FILE_DIR:write_and_read_streams>"  | 
 | 43 | +        COMMENT "Copying sparrow and sparrow-ipc DLLs to example executable directory"  | 
 | 44 | +    )  | 
 | 45 | +endif()  | 
 | 46 | + | 
 | 47 | +# Create a custom target to easily run the example  | 
 | 48 | +add_custom_target(run_example  | 
 | 49 | +    COMMAND write_and_read_streams  | 
 | 50 | +    DEPENDS write_and_read_streams  | 
 | 51 | +    COMMENT "Running write_and_read_streams example"  | 
 | 52 | +    USES_TERMINAL  | 
 | 53 | +)  | 
 | 54 | + | 
 | 55 | +set_target_properties(run_example PROPERTIES FOLDER "Examples")  | 
0 commit comments