- Add OPTIONAL argument to git_external. This gives users the possibility of cloning a repository without aborting the configuration if the operation fails
- Coverage.cmake fixes:
- Fix missing coverage report for multiple project directories
- Rename targets to match PROJECT_NAME-target syntax
- Exclude only generated files from COMMON_GENERATED_FILES property, not everything from PROJECT_BINARY_DIR
- Added new test targets called nightlytests and Project-nightlytests. This targets depend on perf tests, and cpp test files with the prefix "nightly".
- Add c++11 noexcept test (CXX_NOEXCEPT_SUPPORTED define)
- cmake 2.8.9 or later is now required; reduced cmake 3 warnings
- cmake 3 is required for finding a project with find_package() from outside the build tree/from the install tree.
- Optimized cmake run speed significantly
- New project-png target generating a dependency graph if graphviz is found
- New explicit rebase target to update sub projects and externals to configured revision
- FindPackages.cmake should no longer be used; use common_package() for each dependency and common_package_post() at last (will write defines.h, hence after the last call to common_package)
- New variable COMMON_SOURCE_DIR to define the place for all sub projects and externals, defaults to CMAKE_SOURCE_DIR
- Sub projects do not FATAL_ERROR on missing required dependencies, are deactivated instead
- GitExternal.cmake:
- 'user' remote for cloned github repositories (added if GITHUB_USER) is used default for 'git push'
- Added SHALLOW and VERBOSE options
- new targets DIR-rebase and rebase to update git externals and sub projects
- CommonPackageConfig.cmake replaces PackageConfig.cmake. It uses the
export(EXPORT) feature from CMake 3 to generate
${PROJECT_NAME}Targets.cmake file which provides IMPORTED targets. Client projects should use those targets in target_link_libraries() (or NAME_LINK_LIBRARIES if common_library) rather than $ {PROJECT_NAME}_LIBRARIES. - New variable NAME_OMIT_EXPORT for common_library() excludes a target from the list of exported targets. This replaces the project-wide ${PROJECT_NAME}_EXCLUDE_LIBRARIES variable.
- Exported targets provided by CommonPackageConfig.cmake are now generated by common_application() and common_library(); generic target hook for add_executable() and add_library() does not exist anymore.
- common_check_targets() now adds cppcheck, cpplint and clangcheck targets to targets added by common_application() and common_library() instead of adding them via add_executable() and add_library().
- Removed legacy RELEASE_VERSION magic
- common_compiler_flags() macro replaces globally set CMAKE_C[XX]_FLAGS; is automatically applied when using common_application, common_library and CommonCTest
- api.h & version.h/cpp are now generated by common_library, not anymore globally per project (COMMON_INCLUDES and COMMON_SOURCES are not needed/used anymore)
- Added AppleCheckOpenGL.cmake to check for conflicting OpenGL link libraries on OS X
- Added CommonDate.cmake to provide today's date
- New SubProject module based on GitExternal
- Subprojects share a single copy of CMake/common
- Buildyard bootstrapping mechanism deprecated and removed
- Using "cmake -DINSTALL_PACKAGES=1" installs system packages required by a project (Debian/Ubuntu + OSX)
- Added Qt5 support in common_library() and common_application()
- New common_gui_application() for configuring GUI applications (OSX app bundle)
- New common_documentation() for documentation repositories. Deprecated generation of index.html by CMake in favor of Jekyll for github projects
- Fixed doxygen and coverage targets for subprojects, enforce LCOV >= 1.11
- Fixed cppcheck and cpplint targets for subprojects
- New common_package() macro to find a dependency consistently
- PackageConfig searches for ABI-matching upstream dependencies. If VERSION_ABI is not available, fallback to matching VERSION MAJOR+MINOR
- Support for detecting both Python2 and Python3 versions
- Removed LAST_RELEASE variable from projects and use VERSION instead
- Separate unit tests from performance tests
- Arch Linux added to the list of supported platforms
- Multiple fixes for CMake3
- More quiet runs
- Merged and retired CMakeBBP fork
- Removed obsolete components:
- GNUModules
- WriteModuleFile
- BuildLibrary
- FindDisplayCluster
- FindFlatBuffers
- FindTuio
- Windows-specific improvements:
- Targets are properly organized into folders in VisualStudio IDE
- Unwanted targets removed from VisualStudio "All Build" target
- Many fixes for Boost detection
- Mac-specific improvements:
- common_gui_application() installs a relocatable app bundle packaged into a .dmg (if macdeployqt is available)
- Use C++11 std and stdlib on OSX >= 10.9, C++03 on <= 10.8
- Flatten git externals in release branches Needed for some build services which do not allow to pull in git externals at runtime.
- Decouple RELEASE_VERSION from VERSION_ABI. The first is detected automatically when build from a release branch or non-git source folder. The latter now has to be set explicitely in the top-level CMakeLists.
- Add COMMON_USE_CXX03 to disable c++11 features for incompatible projects.
- Unify active ubuntu codenames in Ubuntu.cmake
- Denoised output of find_package() generated by PackageConfig
- Match lcov colors to BBP quality metrics