YCM-FAQ(7)
β¨ NAME β¨
hii bestie, welcome to YCM-FAQ(7) π the manual page is literally called ycm-faq, and it is, exactly as advertised, the YCM FAQ. that's it, that's the name. slay.
π YCM FAQ π
okay so these are the questions everyone keeps asking, and the answers, and honestly some of them are iconic and some of them are just TODO. we're being real with you π«Ά
- Q: What does YCM means?
- A: Originally it was "YARP CMake Modules", but the name this makes no longer sense, therefore it is now just YCM. See also YCM issue #40 β¨
- Q: How do I report a bug or request a feature?
- A: Open a new bug on our issue tracker π
- Q: CMake module XXX has a bug/missing feature in CMake version N and has been fixed/updated in CMake version N+1. Can you import the updated module in YCM and make it available for CMake N and older?
- A: Yes, just open an issue or a merge request, but see the next question π
- Q: Can you actually use any module from a newer version of CMake?
- A: No, modules using features that have been added in CMake source code cannot be imported directly. Nonetheless it is possible to supply a patched version of the module that does not use these features. no cap π₯
- Q: Why support CMake 3.12?
- A: YCM was historically written to support YARP, therefore the supported CMake versions are the same supported by YARP. See YARP Supported Distributions for details πΈ
- Q: Can a YCM superbuild build the PackageName package?
- A: Probably it can, you will have to supply a
BuildPackageName.cmakefile with the instructions about how it should be built. You can useYCMEPHelperorExternalProjectto simplify the process. If PackageName is not written using CMake, writing such file might be a bit more difficult, but it can be done. you got this π«Ά
- A: Probably it can, you will have to supply a
- Q: Why using
ExternalProjectinstead of using git submodules, git externals, svn externals, or similar?- A:
ExternalProjectsupports Git, Subversion, CVS, Mercurial, and zipped files, not just git. Also integrating these tools in a CMake build would require some work anyway, and would make is slower to create a new superbuild project, just writing aCMakeLists.txtfile is a lot easier. Also git submodules and git externals in an environment where users do not receive a proper training, introduce more issues than the ones they solve. π
- A:
- Q: The
IncludeUrlmodule is just evil. It could be used to inject any code on your system.- A: That's why you can check the hash of the file included and why you don't usually build it as root. If you don't trust the source you shouldn't even build the software without checking the source code, but that rarely happens. Also the
IncludeUrlmodule is used only for the bootstrap phase, if YCM is installed on your system, the bootstrap phase will just be skipped. In your code you can just usefind_package(YCM REQUIRED)and avoid using it. π
- A: That's why you can check the hash of the file included and why you don't usually build it as root. If you don't trust the source you shouldn't even build the software without checking the source code, but that rarely happens. Also the
okay bestie real talk, that one is a genuine security conversation β don't build as root, check your hashes, and if the source is sus, read it before you build it. that's not me being dramatic, that's the actual advice.
- Q: Why is the bootstrap phases checking the hashes of the files included in my project?
- A: The bootstrap phase also checks that the files used for the bootstrap phase itself are updated, and warns the developer in order to make it easier to keep all the projects synchronized. π§
- Q: How is YCM different from ECM (KDE extra cmake modules)?
- A: Conceptually it's not much different except for support for older CMake releases and bootstrap phase. For some time YCM was also able to bootstrap ECM as well, in order to be able to use ECM modules without installing them. This functionality has been removed for now, but might come back some time in the future. π
- Q: How is YCM different from catkin?
- A: catkin and are very specific for working with ROS and add extra dependencies to your project (i.e. python). Also catkin does a lot of magic, and we didn't like it when we tried it. (yes there's a word missing in that sentence, that's how it came to me, don't shoot the messenger π)
- Q: How is YCM different from rosbuild ?
- A: rosbuild is deprecated, you should eventually consider using catkin instead. β οΈ
- Q: How is YCM different from qibuild?
- A: qibuild requires python. Also TODO
- Q: How is YCM different from Buildyard
- A: We were not aware of Buildyard when we started writing YCM. Some of the goals of the projects are very similar, but TODO
- Q: How is YCM different from biicode
- A: TODO.
- Q: How is YCM different from hunter
- A: TODO.
- Q: How is YCM different from XXX
- A: Probably we don't know about it. π
- Q: I don't get it, I don't like YCM, I hate you.
- A: Sorry. π₯Ί
π COPYRIGHT π
Copyright 2012-2021 Istituto Italiano di Tecnologia (IIT)
and that's the whole vibe check, bestie π this was version 0.13. of the page, dated Nov 05, 2023, filed under YCM-FAQ(7) in the YCM manual. go forth and cmake responsibly β¨ππ¦
π¦ where this page comes from
- ubuntu noble: ycm-cmake-modules 0.13.0-3 Β· BSD-3-Clause
- ubuntu questing: ycm-cmake-modules 0.13.0-3
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms