Files
allwpilib/wpilibcExamples/CMakeLists.txt
sciencewhiz 21d921184a [examples] Add compilable code snippets (#7909)
This enables frc-docs to use RLIs for things that are currently in-line
code blocks, and ensures they compile, which is important with the 2027
breaking changes coming. They are kept separate from the examples to
ensure they don't polute the VSCode examples finder.

Adds the Encoder snippets used in the frc-docs Encoder article as the
first instance of this.
2025-04-22 15:26:26 -06:00

80 lines
2.8 KiB
CMake

project(wpilibcExamples)
include(AddTest)
include(SubDirList)
subdir_list(TEMPLATES ${CMAKE_SOURCE_DIR}/wpilibcExamples/src/main/cpp/templates)
subdir_list(EXAMPLES ${CMAKE_SOURCE_DIR}/wpilibcExamples/src/main/cpp/examples)
subdir_list(SNIPPETS ${CMAKE_SOURCE_DIR}/wpilibcExamples/src/main/cpp/snippets)
add_custom_target(wpilibcExamples)
add_custom_target(wpilibcExamples_test)
foreach(example ${EXAMPLES})
file(
GLOB_RECURSE sources
src/main/cpp/examples/${example}/cpp/*.cpp
src/main/cpp/examples/${example}/c/*.c
)
add_executable(${example} ${sources})
wpilib_target_warnings(${example})
target_include_directories(${example} PUBLIC src/main/cpp/examples/${example}/include)
target_link_libraries(
${example}
apriltag
wpilibc
wpilibNewCommands
romiVendordep
xrpVendordep
)
add_dependencies(wpilibcExamples ${example})
if(WITH_TESTS AND EXISTS ${CMAKE_SOURCE_DIR}/wpilibcExamples/src/test/cpp/examples/${example})
wpilib_add_test(Example_${example} src/test/cpp/examples/${example}/cpp)
target_sources(Example_${example}_test PRIVATE ${sources})
target_include_directories(
Example_${example}_test
PRIVATE
src/main/cpp/examples/${example}/include
src/test/cpp/examples/${example}/include
)
target_compile_definitions(Example_${example}_test PUBLIC RUNNING_FRC_TESTS)
target_link_libraries(
Example_${example}_test
apriltag
wpilibc
wpilibNewCommands
romiVendordep
xrpVendordep
googletest
)
add_dependencies(wpilibcExamples_test Example_${example}_test)
endif()
endforeach()
foreach(template ${TEMPLATES})
file(
GLOB_RECURSE sources
src/main/cpp/templates/${template}/cpp/*.cpp
src/main/cpp/templates/${template}/c/*.c
)
add_executable(${template} ${sources})
wpilib_target_warnings(${template})
target_include_directories(${template} PUBLIC src/main/cpp/templates/${template}/include)
target_link_libraries(${template} wpilibc wpilibNewCommands romiVendordep xrpVendordep)
add_dependencies(wpilibcExamples ${template})
endforeach()
foreach(snippet ${SNIPPETS})
file(
GLOB_RECURSE sources
src/main/cpp/snippets/${snippet}/cpp/*.cpp
src/main/cpp/snippets/${snippet}/c/*.c
)
add_executable(snippet${snippet} ${sources})
wpilib_target_warnings(${snippet})
target_include_directories(snippet${snippet} PUBLIC src/main/cpp/snippets/${snippet}/include)
target_link_libraries(snippet${snippet} wpilibc wpilibNewCommands romiVendordep xrpVendordep)
add_dependencies(wpilibcExamples snippet${snippet})
endforeach()