|
| 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