Comments (5)
If a the geometry classes along with a small subset of other base utility classes could be pulled out into its own library, build times should decrease.
The geometry classes depend on more than a small subset of code: Eigen, gcem, units, and wpiutil (which itself also contains a JSON library the geometry classes use). Making and managing separate libraries for these would be painful because our Gradle build system does no dependency tracking whatsoever; we have to list all transitive dependencies everywhere they're used, in the proper order.
This concept could go "all the way" like python does and basically break all of the folders into their own library
Given what I've said above, this seems unrealistic without an actual C++ package manager.
from allwpilib.
For my experiment, I made a wpilibmath-core
which had eigen, gcem, units, and compiled sleipnir
(required by ellipse) as its own library, and then could make a wpilibmath-geometry
which depended on that and wpiutil.
I'm not super familiar with gradlerio / native tools, but this seems to have some dependency resolution built in.
from allwpilib.
It actually doesn't. Notice how all the transitive dependencies (e.g., ni_libraries) are listed there, not just what it directly depends on.
If you look through allwpilib's build.gradles, you'll also notice when it lists the wpimath library target, it also lists wpiutil. wpiutil is a dependency of wpimath, so it shouldn't need to be listed if depedency resolution worked.
from allwpilib.
Well, in so much as photonvision can do a one liner to get wpilib for example.
Yes, it has to list out transitive things, but in this case those deps would be well defined and could be added to the appropriate lists there. It also seems like something that could be modified to only have direct dependencies, and then recursed on to get the whole list.
from allwpilib.
It also seems like something that could be modified to only have direct dependencies, and then recursed on to get the whole list.
Someone who actually knows Gradle would have to write that, and @ThadHouse is pretty much the only Gradle wizard we have. He had to write a custom native library handler because Gradle's built-in native support sucks. None of our Maven artifacts include dependency information either.
from allwpilib.
Related Issues (20)
- Make upstream_utils update patch list during format-patch command
- All GUI apps crash when built on Windows with CMake
- Add protobuf and struct support to apriltag
- imgui should not be built for Athena
- [epilogue] Allow logging period to be configurable HOT 1
- [Epilogue] Add support for persistant variables HOT 9
- [Epilogue] Improve opt-in logging support HOT 1
- Add usage reporting ID for epilogue
- Add usage reporting ID for the LEDPattern API
- Remove empty defaults from switch statements and expressions HOT 3
- Add libssh wrapper
- Epilogue warning in RapidReactCommandBot example
- LoggerTest.addMessageTest often fails due to race conditions
- RoboRIO team number setter: display/output log
- Memory Leek When Robot Container Object is Deconstructed HOT 7
- I Would Like to Volunteer HOT 1
- Add Catch2 to upstream_utils
- Add Upload Support for Persistent Tables HOT 1
- Generated command HID classes not included in C++ build, despite being included in the build.gradle HOT 1
- Change native builds from Gradle to cmake (tracking issue) HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from allwpilib.