-
Notifications
You must be signed in to change notification settings - Fork 285
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
CMake package conventions and conformity #477
Comments
It occurs to me that, while this may be easy from the cmake side of things, it could make the debian packaging significantly more complex (and maybe Homebrew as well, but I've never touched Homebrew before, so I don't know). I wonder if it would be possible/useful to have cmake auto-generate the debian packaging files using the Edit: On second thought, this would probably be more trouble than it's worth. |
One minor thought: If you did actually leave Or really any naming convention that makes CMake use a name other than just |
This hasn't been mentioned here yet, but we're in the process of deciding upon an entirely new name for DART, so that conflict won't be an issue in the future. There should be an official announcement about this in the not-too-distant future. So everywhere that I used "dart" in the earlier posts, just imagine that's a placeholder for whatever the new library name will be. |
The components of |
|
One random example of software with number in name: x264 video encoder |
My two cents are that while the name is pretty cute, it's also nice to have something plain and readable, especially if it needs to get used in literature references or international codebases where the onomatopoeia isn't going to make any sense. Consider cases like libiberty, which is named to get the cute linker flag Anyway, it sounds like @jslee02 has a list going already. |
We should probably hold off on discussing the merits of potential names until the official thread is posted (we'll be posting it as a Github issue). It'll be better to have all that discussion consolidated in one place. |
Beside on the renaming of DART, I like the idea of reorganizing DART as proposed. This would allow us to install dart more systematically with the package manage systems. For example, we cannot use BulletCollisionDetector when we install If anyone have a plan on implementing this I would like to do. Here is tentative list of libraries I'm thinking of:
Please let me know if there is missing.
|
@mkoval and I were also discussing the merits of reorganizing into modules as far as contributing new functionality. Packages can be built and tested in separate repositories, and later be merged as components (as they become mature) without heavy restructuring. |
If you're referring to git submodules, I've heard both very good and very bad things about using them. I haven't attempted to use them myself, so I don't know exactly where to stand on them. If anyone is experienced with using them and has good reference material for them, I'd be interested in learning more. |
I also haven't used the functionality yet. It would be a good chance to learn about it to me. |
I wasn't actually referring to git submodules... they have some serious tradeoffs in complexity and semantics: One alternative you might want to track if you are interested in that approach is I just meant that we could easily move code into the mainline repo without having to merge files into the source directories and refactor the build system to accommodate. |
I don't have a strong objection but am not sure if it is worth to have multiple repositories for each module when the modules are quite small. It would be possible to resolve the It would be good if someone can let me know the advantages of doing so. |
In general, I would advise against many small repositories:
It does however help with the following:
As far as I can tell, no one here, including me, is strongly in favor of splitting into multiple repositories. We have been discussing just organizing the directories of the main repo into a set of modules that build separately. |
I agree with @psigen. I think that it is a great idea to split DART into multiple libraries to help manage the dependency explosion. However, I very much do not want DART split into multiple repositories for the reasons that he outlined. Even though all of the modules are in one repository, I think each module should:
My biggest confusion with multiple-component projects is the confusion about what you need to depend on. This is a constant frustration with Boost: the only way I know if I need to depend on |
I believe this is addressed by #587. Please reopen if there are more things need to be handled. |
For the sake of pull request #461 I started digging through some of CMake's packaging documentation and also reviewing DART's current cmake setup. I thought I would discuss some of my findings and my thoughts on how we might improve DART's packaging. Some of this also comes from discussions with @mkoval.
find_package
are supposed to be absolute paths, but DART currently just returns library names. It may be a good idea to follow the convention that's stated by the doc.dart-core
anddart
is understandable, but I think it could be handled more gracefully. What I would propose is renamingdart-core
to just bedart
, and then the extra features that are currently indart
should each be split out into its ownCOMPONENT
based on their dependencies. For example, the contents ofdart/gui
which depend on OpenGL should go into adart-gui
library. The contents ofdart/planning
which depend on FLANN should go into adart-planning
library.It gets a bit trickier when it comes to components that are nested within namespaces. For instance,
dart/optimizer/nlopt
could go into a library nameddart-nlopt
or it could go intodart-optimizer-nlopt
. The first option offers a shorter name, which is nice, but the second option is more precise and consistent. The second option has the added benefit of avoiding possible future collisions, for example if we end up with adart/planner/nlopt
extension which is independent of thedart/optimizer/nlopt
. After giving it some thought, I think I would prefer using the full name, but I'm not necessarily opposed to the shortened name.find_package(DART COMPONENTS xxx)
feature of CMake to allow the user to decide what they want to include in the${DART_LIBRARIES}
variable. For example,find_package(DART COMPONENTS gui planning utils-sdf)
would set${DART_LIBRARIES}
to includedart
along with the GUI library, planning library, and SDF parsing library.I think this overall approach would conform better to how CMake packages are usually handled. It may also make DART easier for end users to install, because they'll have a finer level of control over the dependencies.
The text was updated successfully, but these errors were encountered: