Provided by: ycm-cmake-modules_0.13.0-2_all bug

NAME

       ycm-faq - YCM FAQ

YCM FAQ

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 #40Q      How do I report a bug or request a feature?

         A      Open a new bug on our issue trackerQ      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.

       •

         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.cmake file  with  the
                instructions   about  how  it  should  be  built.  You  can  use  YCMEPHelper  or
                ExternalProject to simplify the process. If  PackageName  is  not  written  using
                CMake, writing such file might be a bit more difficult, but it can be done.

       •

         Q      Why  using  ExternalProject  instead  of using git submodules, git externals, svn
                externals, or similar?

         A      ExternalProject supports 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
                a  CMakeLists.txt file 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.

       •

         Q      The  IncludeUrl  module 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
                IncludeUrl  module  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
                use find_package(YCM REQUIRED) and avoid using it.

       •

         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.

       •

         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)