YCM 0.10.0 (2019-04-01) Release Notes ************************************* .. only:: html .. contents:: Changes made since YCM 0.9 include the following. Build System ============ * YCM can now be included safely in another project using :cmake:module:`FetchContent`. Variables ========= * The following varibales are no longer cached, since they should be set from the project maintainer, and not by the user: * :variable:`YCM_USE_CMAKE_` * :variable:`YCM_USE_CMAKE_NEXT` * :variable:`YCM_USE_CMAKE_PROPOSED` * :variable:`YCM_USE_3RDPARTY` * :variable:`YCM_USE_DEPRECATED` * The :variable:`YCM_USE_CMAKE` can now be used to disable simultaneously all the :variable:`YCM_USE_CMAKE_`, :variable:`YCM_USE_CMAKE_NEXT`, and :variable:`YCM_USE_CMAKE_PROPOSED` variables. Modules ======= Generic Modules --------------- * The :module:`InstallBasicPackageFiles` module learned to forward the ``ARCH_INDEPENDENT`` option to :command:`write_basic_package_version_file`. * The :module:`IncludeUrl` module no longer uses locks. * The :module:`InstallBasicPackageFiles` module no longer looks for the ``Config.cmake.in`` in the root directory, only current source directory is supported. * The :module:`YCMDefaultDirs` module default dirs now use ``CMAKE_CURRENT_BINARY_DIR`` instead of ``CMAKE_BINARY_DIR``. * The :module:`YCMDefaultDirs` module is now deprecated. * The :module:`InstallBasicPackageFiles` module no longer needs ``FIRST_TARGET`` when used with ``EXPORT``. Using ``FIRST_TARGET`` is deprecated. * :module:`InstallBasicPackageFiles`: the ``TARGETS``, ``TARGETS_PROPERTY``, and ``TARGETS_PROPERTIES`` arguments are deprecated. * The :module:`AddUninstallTarget` module must now be included in your main ``CMakeLists.txt``. If included in a subdirectory it does nothing. This allows you to use it safely in your main ``CMakeLists.txt`` and include your project using ``add_subdirectory`` (for example when using it with :cmake:module:`FetchContent`). * The :module:`AddUninstallTarget` module no longer tries to add the ``uninstall`` target if the target it already exists, instead it does nothing. * :module:`InstallBasicPackageFiles`: The list of targets is no longer used to decide whether ``PRIVATE_DEPENDENCIES`` should be enabled or not (only the :cmake:variable:`BUILD_SHARED_LIBS` variable is used). Dependencies for ``STATIC``, ``OBJECT``, and ``INTERFACE`` libraries should be passed as ``DEPENDENCIES`` instead. * :module:`InstallBasicPackageFiles`: The ``NO_COMPATIBILITY_VARS`` option is deprecated. The compatibility variables are no longer generated by default, and their generation is broken when using ``EXPORT``. If required, it is possible to re-enable it using the ``ENABLE_COMPATIBILITY_VARS`` option (deprecated) or define them using either ``INCLUDE_FILE`` or ``INCLUDE_CONTENT`` (recommended). * :module:`InstallBasicPackageFiles`: Fixed malformed `find_package()` when a package dependency had a required version, for CMake older than 3.9. * The :module:`InstallBasicPackageFiles` module now considers a relative ``EXPORT_DESTINATION`` as relative to ``CMAKE_CURRENT_BINARY_DIR`` instead of ``CURRENT_BINARY_DIR``. * :module:`InstallBasicPackageFiles`: Fixed export destination when ``EXPORT_DESTINATION`` is an absolute path. Superbuild Helper Modules ------------------------- * The :module:`YCMEPHelper` module now supports the ``CMAKE_CACHE_DEFAULT_ARGS`` argument. * The :module:`YCMEPHelper` module supports the ``SOURCE_SUBDIR`` argument. The ``CONFIGURE_SOURCE_DIR`` argument is now deprecated in favour of ``SOURCE_SUBDIR``. * The :module:`YCMEPHelper` module now passes the variable ``CMAKE_TOOLCHAIN_FILE`` to the children projects. * :module:`YCMEPHelper`: The ``CMAKE_PREFIX_PATH` list passed to the subproject now has the first element the installation directory of the superbuild. This is to ensure that if a package is available in the system but it is disabled using ``USE_SYSTEM_`` set to ``OFF``, the version installed by the superbuild is the one found by the other packages in the superbuild. * The :module:`YCMEPHelper` module now adds subproject to the main install target, if they provide a ``cmake_install.cmake`` file in their build directory. This file is automatically provided by CMake for projects installing at least one file. This feature should be considered experimental and might be modified or removed in the future. Please note that non-relocatable file will contain the path for the project installation (i.e. the path to the ``install`` folder inside the superbuild binary directory), not to ``CMAKE_INSTALL_PREFIX``. Find Modules ------------ * The :module:`FindLibOVR` module now works properly with VS2015. * The :module:`FindPortAudio` module should now detect the library installed by vcpkg. * The :module:`FindPortAudio` module now handles debug and release libraries. * Import :module:`FindI2C` module from `YARP Git Repository`_. * The :module:`FindACE` module now creates the ``ACE::ACE`` and ``ACE::ACE_INLINE`` imported targets. The ``ACE_ADDR_HAS_LOOPBACK_METHOD`` and ``ACE_COMPILES_WITHOUT_INLINE_`` are now deprecated. * The ``FindQt3`` module is deprecated in favour of one from CMake. * Added :module:`Findassimp` module to locate the Open Asset Importer Library (assimp). * Added :module:`FindGLM` module to locate the OpenGL Mathematics (GLM) library. CMake Next ---------- * Updated to CMake v3.14.0 + commit :cmake-commit:`e67e4dbaadf3583d665fb5409b425e1a238d9748`. * Imported :module:`FindDoxygen` module from CMake 3.9. * Imported :module:`WriteBasicConfigVersionFile` and :module:`CMakePackageConfigHelpers` modules from CMake master, to support the ``ARCH_INDEPENDENT`` option in :command:`write_basic_package_version_file`. * Imported :module:`FetchContent` module from CMake 3.11. * Imported :module:`FindOpenGL` module from CMake 3.10. * The :module:`ExternalProject` module was updated from CMake next. All the customizations were removed, with the exception of the ``git`` deleting clones fix. * The :module:`FindGlew` module is now dowloaded from CMake master. 3rd Party --------- * Imported :module:`FindGObject` module from `qt-gstreamer Git Repository`_ + some unmerged changes from robotology-dependencies fork. * Imported :module:`CMakeRC` module from `CMakeRC Git Repository`_. * Update `Catch2 Git Repository`_ to commit ``4902cd721586822ded795afe0c418c553137306a`` + some unmerged changes from robotology-dependencies fork. * Imported :module:`UseLATEX` module from `UseLATEX Git Repository`_.