plugins { id "cpp" id "google-test-test-suite" id "edu.wpi.first.GradleRIO" version "2025.1.1-beta-2" } repositories { mavenLocal() jcenter() } wpi.maven.useLocal = false wpi.maven.useDevelopment = false wpi.versions.wpilibVersion = "2025.1.1-beta-2" wpi.versions.wpimathVersion = "2025.1.1-beta-2" // 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) { // We don't need to build for roborio -- if we do, we need to install // a roborio toolchain every time we build in CI // Ideally, we'd be able to set the roborio toolchain as optional, but // I can't figure out how to set that environment variable from build.gradle // (see https://github.com/wpilibsuite/native-utils/blob/2917c69fb5094e36d499c465f047dab81c68446c/ToolchainPlugin/src/main/java/edu/wpi/first/toolchain/ToolchainGraphBuildService.java#L71) // for now, commented out // targetPlatform wpi.platforms.roborio if (includeDesktopSupport) { targetPlatform wpi.platforms.desktop } sources.cpp { source { srcDir 'src/main/cpp' include '**/*.cpp', '**/*.cc' } exportedHeaders { srcDir 'src/main/include' } } // Set deploy task to deploy this component deployArtifact.component = it // Enable run tasks for this component wpi.cpp.enableExternalTasks(it) // Enable simulation for this component 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' } } // Enable run tasks for this component wpi.cpp.enableExternalTasks(it) wpi.cpp.vendor.cpp(it) wpi.cpp.deps.wpilib(it) wpi.cpp.deps.googleTest(it) } } }