plugins { id "cpp" id "google-test-test-suite" id "edu.wpi.first.GradleRIO" version "2024.3.2" id "com.dorongold.task-tree" version "2.1.0" } repositories { mavenLocal() jcenter() } apply from: "${rootDir}/../shared/examples_common.gradle" ext { wpilibVersion = "2025.0.0-alpha-1" wpimathVersion = wpilibVersion openCVversion = "4.8.0-2" } wpi.getVersions().getOpencvVersion().convention(openCVversion); wpi.getVersions().getWpilibVersion().convention(wpilibVersion); wpi.getVersions().getWpimathVersion().convention(wpimathVersion); // Define my targets (RoboRIO) and artifacts (deployable files) // This is added by GradleRIO's backing project DeployUtils. deploy { targets { roborio(getTargetTypeClass('RoboRIO')) { // Team number is loaded either from the .wpilib/wpilib_preferences.json // or from command line. If not found an exception will be thrown. // You can use getTeamOrDefault(team) instead of getTeamNumber if you // want to store a team number in this file. team = project.frc.getTeamOrDefault(5940) debug = project.frc.getDebugOrDefault(false) artifacts { // First part is artifact name, 2nd is artifact type // getTargetTypeClass is a shortcut to get the class type using a string frcCpp(getArtifactTypeClass('FRCNativeArtifact')) { } // Static files artifact frcStaticFileDeploy(getArtifactTypeClass('FileTreeArtifact')) { files = project.fileTree('src/main/deploy') directory = '/home/lvuser/deploy' } } } } } def deployArtifact = deploy.targets.roborio.artifacts.frcCpp // Set this to true to enable desktop support. def includeDesktopSupport = true // Set to true to run simulation in debug mode wpi.cpp.debugSimulation = false // Default enable simgui wpi.sim.addGui().defaultEnabled = true // Enable DS but not by default wpi.sim.addDriverstation() model { components { frcUserProgram(NativeExecutableSpec) { targetPlatform wpi.platforms.roborio targetPlatform wpi.platforms.desktop sources.cpp { source { srcDir 'src/main/cpp' } exportedHeaders { srcDir 'src/main/include' } } deployArtifact.component = it wpi.cpp.enableExternalTasks(it) wpi.sim.enable(it) // Defining my dependencies. In this case, WPILib (+ friends), and vendor libraries. wpi.cpp.vendor.cpp(it) wpi.cpp.deps.wpilib(it) } } testSuites { frcUserProgramTest(GoogleTestTestSuiteSpec) { testing $.components.frcUserProgram sources.cpp { source { srcDir 'src/test/cpp' include '**/*.cpp' } } wpi.cpp.enableExternalTasks(it) wpi.cpp.vendor.cpp(it) wpi.cpp.deps.wpilib(it) wpi.cpp.deps.googleTest(it) } } }