内容简介:自动化构建系统 CMake 3.11 已发布,该版本添加了对 TI C/C++ 编译器的支持。更新内容较多,详情: Platforms TI C/C++ compilers are now supported by the Ninja generator. Generators The CodeBlocks ext...
自动化构建系统 CMake 3.11 已发布,该版本添加了对 TI C/C++ 编译器的支持。更新内容较多,详情:
Platforms
TI C/C++ compilers are now supported by the Ninja generator.
Generators
The CodeBlocks extra generator learned to check a CMAKE_CODEBLOCKS_COMPILER_ID variable for a custom compiler identification value to place in the project file.
The Makefile Generators and the Ninja generator learned to add compiler launcher tools along with the compiler for the Fortran language (C, CXX, and CUDA were supported previously). See the CMAKE_<LANG>_COMPILER_LAUNCHER variable and <LANG>_COMPILER_LAUNCHER target property for details.
Visual Studio Generators learned to support the COMPILE_LANGUAGE generator expression in target-wide COMPILE_DEFINITIONS, INCLUDE_DIRECTORIES, COMPILE_OPTIONS, and file(GENERATE). See generator expression documentation for caveats.
The Xcode generator learned to support the COMPILE_LANGUAGE generator expression in target-wide COMPILE_DEFINITIONS and INCLUDE_DIRECTORIES. It previously supported only COMPILE_OPTIONS and file(GENERATE). See generator expression documentation for caveats.
Commands
add_library() and add_executable() commands can now be called without any sources and will not complain as long as sources are added later via the target_sources() command.
The file(DOWNLOAD) and file(UPLOAD) commands gained NETRC and NETRC_FILE options to specify use of a.netrc file.
The target_compile_definitions() command learned to set the INTERFACE_COMPILE_DEFINITIONS property onImported Targets.
The target_compile_features() command learned to set the INTERFACE_COMPILE_FEATURES property on Imported Targets.
The target_compile_options() command learned to set the INTERFACE_COMPILE_OPTIONS property on Imported Targets.
The target_include_directories() command learned to set the INTERFACE_INCLUDE_DIRECTORIES property onImported Targets.
The target_sources() command learned to set the INTERFACE_SOURCES property on Imported Targets.
The target_link_libraries() command learned to set the INTERFACE_LINK_LIBRARIES property on Imported Targets.
Variables
A CMAKE_GENERATOR_INSTANCE variable was introduced to hold the selected instance of the generator’s corresponding native tools if multiple are available. This is used by the Visual Studio 15 2017generator to hold the selected instance of Visual Studio persistently.
A CMAKE_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS variable was added to enable setting of default permissions for directories created implicitly during installation of files by install() andfile(INSTALL), e.g. during make install.
A CMAKE_JOB_POOLS variable was added specify a value to use for the JOB_POOLS property. This enables control over build parallelism with command line configuration parameters when using the Ninja generator.
The CMAKE_NETRC and CMAKE_NETRC_FILE variables were added to specify use of a .netrc file by thefile(DOWNLOAD) and file(UPLOAD) commands and the ExternalProject module.
A CMAKE_CUDA_SEPARABLE_COMPILATION variable was added to initialize the CUDA_SEPARABLE_COMPILATION target property on targets when they are created.
Properties
The COMPILE_DEFINITIONS source file property learned to support generator expressions.
A COMPILE_OPTIONS source file property was added to manage list of options to pass to the compiler.
An IMPORTED_GLOBAL target property was added to indicate whether an IMPORTED target is globally visible. It is automatically set to a true value for targets created with the GLOBAL option to add_library() or add_executable(). Additionally, project code may now promote a local imported target to be globally visible by setting this property to TRUE.
An INCLUDE_DIRECTORIES source file property was added to specify list of preprocessor include file search directories.
Source file properties VS_SHADER_DISABLE_OPTIMIZATIONS and VS_SHADER_ENABLE_DEBUG have been added to specify more details of .hlsl sources with Visual Studio Generators.
Modules
The CheckIncludeFile module check_include_file macro learned to honor the CMAKE_REQUIRED_LIBRARIESvariable.
The CheckIncludeFileCXX module check_include_file_cxx macro learned to honor the CMAKE_REQUIRED_LIBRARIESvariable.
The CheckIncludeFiles module check_include_files macro learned to honor the CMAKE_REQUIRED_LIBRARIESvariable.
The CheckIncludeFiles module CHECK_INCLUDE_FILES() command gained a LANGUAGE option to specify whether to check using the C or CXX compiler.
The CMakePackageConfigHelpers module write_basic_package_version_file() command learned a newSameMinorVersion mode for the COMPATIBILITY argument.
The ExternalProject module learned to substitute <DOWNLOAD_DIR> in comments, commands, working directory and byproducts.
The ExternalProject module gained NETRC and NETRC_FILE options to specify use of a .netrc file.
A new FetchContent module was added which supports populating content at configure time using any of the download/update methods supported by ExternalProject_Add(). This allows the content to be used immediately during the configure stage, such as with add_subdirectory(), etc. Hierarchical project structures are well supported, allowing parent projects to override the content details of child projects and ensuring content is not populated multiple times throughout the whole project tree.
The FindBLAS and FindLAPACK modules learned to support FLAME blis and libflame.
The FindDoxygen module doxygen_add_docs() function now supports a new DOXYGEN_VERBATIM_VARS list variable. Any DOXYGEN_... variable contained in that list will bypass the automatic quoting logic, leaving its contents untouched when transferring them to the output Doxyfile.
A FindIconv module was added to locate iconv support.
The GenerateExportHeader module GENERATE_EXPORT_HEADER command gained an INCLUDE_GUARD_NAME option to change the name of the include guard symbol written to the generated export header. Additionally, it now adds a comment after the closing #endif on the generated export header’s include guard.
The UseJava module add_jar command gained a GENERATE_NATIVE_HEADERS option to generate native header files using javac -h for javac 1.8 or above. This supersedes create_javah, which no longer works with JDK 1.10 and above due to removal of the javah tool by JEP 313.
Autogen
When using AUTOMOC or AUTOUIC, CMake now starts multiple parallel moc or uic processes to reduce the build time. A new CMAKE_AUTOGEN_PARALLEL variable and AUTOGEN_PARALLEL target property may be set to specify the number of parallel moc or uic processes to start. The default is derived from the number of CPUs on the host.
CTest
The ctest_start() command no longer sets CTEST_RUN_CURRENT_SCRIPT due to issues with scoping if it is called from inside a function. Instead, it sets an internal variable in CTest. However, setting CTEST_RUN_CURRENT_SCRIPT to 0 at the global scope still prevents the script from being re-run at the end.
CPack
cpack(1) gained --trace and --trace-expand options.
The CPackIFW module gained new CPACK_IFW_PACKAGE_REMOVE_TARGET_DIR variable to control if the target directory should not be deleted when uninstalling.
The CPackRPM module learned to enable enforcing of execute privileges on programs and shared libraries. See CPACK_RPM_INSTALL_WITH_EXEC variable.
A CPACK_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS variable was added which serves the same purpose during packaging (e.g. make package) as the CMAKE_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS variable serves during installation (e.g. make install).
Other
Alias Targets may now alias Imported Targets that are created with the GLOBAL option to add_library().
Interface Libraries may now have custom properties set on them if they start with either an underscore (_) or a lowercase ASCII character. The original intention was to only allow properties which made sense for INTERFACE libraries, but it also blocked usage of custom properties.
The cmake(1) --open <dir> command-line option was added to open generated IDE projects like Visual Studio solutions or Xcode projects.
Deprecated and Removed Features
An explicit deprecation diagnostic was added for policies CMP0037 through CMP0054 (CMP0036 and below were already deprecated). The cmake-policies(7) manual explains that the OLD behaviors of all policies are deprecated and that projects should port to the NEW behaviors.
The KDevelop3 generator has been removed.
Other Changes
Policy CMP0037 no longer reserves target names associated with optional features, such as test and package, unless the corresponding feature is enabled.
The FindOpenGL module now prefers GLVND libraries if available. See policy CMP0072.
The minimum deployment target set in the CMAKE_OSX_DEPLOYMENT_TARGET variable used to be only applied for macOS regardless of the selected SDK. It is now properly set for the target platform selected by CMAKE_OSX_SYSROOT. For example, if the sysroot variable specifies an iOS SDK then the value in CMAKE_OSX_DEPLOYMENT_TARGET is interpreted as minimum iOS version.
The Xcode generator behavior of generating one project file per project() command may now be controlled with the CMAKE_XCODE_GENERATE_TOP_LEVEL_PROJECT_ONLY variable. This could be useful to speed up the CMake generation step for large projects and to work-around a bug in the ZERO_CHECK logic.
Since the CMakeCache.txt format does not support newlines in values, values containing newlines are now truncated before writing to the file. In addition, a warning comment is written to the cache file, and a warning message is displayed to the user on the console.
发布说明:https://blog.kitware.com/cmake-3-11-0-available-for-download/
【声明】文章转载自:开源中国社区 [http://www.oschina.net]
以上所述就是小编给大家介绍的《自动化构建系统 CMake 3.11 现已支持 TI C/C++ 编译器》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- LLVM接受NVIDIA的“f18” Fortran编译器作为官方Fortran编译器
- 编译原理实战入门:用 JavaScript 写一个简单的四则运算编译器(四)结语
- Scala.js 0.6.29 发布,将 Scala 编译成 js 的编译器
- Go 编译器介绍
- Go 编译器介绍
- C++编译器优化
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
API Design for C++
Martin Reddy / Morgan Kaufmann / 2011-2-18 / USD 59.95
The design of application programming interfaces can affect the behavior, capabilities, stability, and ease of use of end-user applications. With this book, you will learn how to design a good API for......一起来看看 《API Design for C++》 这本书的介绍吧!
JS 压缩/解压工具
在线压缩/解压 JS 代码
随机密码生成器
多种字符组合密码