首页 > 软件 > Mac应用软件 > Mac开发软件 > CMake for Mac(跨平台程序编译工具) v3.28.1稳定版

软件介绍

CMake是一种开源的跨平台构建工具,适用于Mac和其他操作系统。它通过简化和自动化构建过程,帮助开发人员管理和构建项目。使用CMake可以轻松地生成Makefile或Xcode项目文件,并进行编译和构建。CMake的灵活性和易用性使其成为开发人员的首选工具,能够提高项目的配置和构建效率。

CMake for Mac(编程工具)安装教程

在本站下载完CMake mac破解版安装包后,打开镜像包,将左侧文件拖动到右侧应用程序中即可。

CMake for Mac(编程工具)软件介绍

CMake Mac版是一款Mac平台上免费的编译工具,CMake旨在构建、测试和软件打包。CMake是用于控制软件使用简单的平台和编译器编译过程独立配置文件。CMake生成本机makefile和工作区,可以使用您所选择的编译器环境。

CMake可以处理就地和不合适的构建,从同一个源树中启用多个构建,并交叉编译。在源树之外构建目录树的能力是一个关键特性,确保如果构建目录被删除,源文件将不受影响。另一个功能是生成要与图形编辑器一起使用的缓存的功能,当运行CMake时,可以查找可执行文件,文件和库。该信息进入缓存,然后可以在生成本机构建文件之前进行调整。依赖于多个库的复杂目录层次结构和应用程序得到CMake的良好支持。例如,CMake能够容纳具有多个工具包的项目,或者每个具有多个目录的库。此外,CMake可以在生成要为最终应用程序编译的代码之前创建需要创建可执行文件的项目。其开源的可扩展设计允许CMake根据具体项目进行调整。

它可以为许多平台和IDE生成makefile,包括Unix,Windows,Mac OS X,OS / 2,MSVC,Cygwin,MinGW和Xcode。使用CMake的项目包括Blender,Bullet物理引擎,LLVM和Clang,MariaDB,MuseScore,MySQL,Qt5,Second Life,Stellarium和SuperTux。

CMake for Mac(编程工具)功能特色

-编译源代码并轻松生成二进制代码

-在使用CMake时,您可以使用独立的配置文件编译项目。但是,必须首先提供源代码和输出位置才能进入配置面板。

-CMake使您可以使用默认的本地编译器,选择要使用的特定本机编译器,为交叉编译提供工具链文件,或手动配置交叉编译选项。

-该实用程序允许您设置目标操作系统和版本,处理器以及C,C ++和Fortran编译器。另外,您可以提供目标根,并选择程序或库模式。

-此外,您可以指定要用于当前项目的生成器:Unix Makefile,Ninja,Xcode,CodeBlocks,CodeLite,Eclipse,KDevelop,Kate或Sublime Text。

-创建依赖多个库的应用程序

-CMake能够构建和测试多个文件夹附带的源代码,并且还需要各种库才能正常运行。该实用程序依赖于放置在源代码目录中的CMakeLists.txt文件,并包含构建项目的所有命令。

-请注意,CMake附带了一组预定义的命令,它们将包含在CMakeLists.txt文件中,但您也可以选择创建自己的自定义命令。

-跨平台构建环境,可以帮助您编译和打包源代码

-CMake是一个功能强大的软件解决方案,用于编译,测试和打包源代码,可以通过用户友好的界面使用广泛的工具集大大简化了该过程。

新增功能

语言

CMake学会了支持Objective C(OBJC)和Objective C ++(OBJCXX)语言。它们可以通过project() 和 enable_language()命令。当OBJC或OBJCXX 启用与,源文件.m或.mm将分别被编译成目标C或C ++。否则,它们将像以前一样被视为纯C ++源。

编译器

Clang现在支持上的编译器Solaris。

平台

AIX上,使用 ENABLE_EXPORTStarget属性现在会生成一个链接程序导入文件,该文件具有.imp可执行文件之外的扩展名。插件(通过创建add_library()与MODULE选项)使用target_link_libraries()链接到可执行文件的符号,现在使用导入文件链接。的install(TARGETS)命令现在将导入文件安装为ARCHIVE工件。

在AIX上,默认情况下不再启用运行时链接。CMake为链接器提供了足够的信息来预先解析所有符号。可以通过添加共享库和/或可加载模块-Wl,-G的链接标志来手动启用运行时链接(例如,在CMAKE_SHARED_LINKER_FLAGS 要么 CMAKE_MODULE_LINKER_FLAGS变量)。您可以通过将可执行文件添加-Wl,-brtl到链接标记中来手动启用其运行时链接 (例如,在 CMAKE_EXE_LINKER_FLAGS 变量)。

命令行

cmake(1) -E现在支持true和false命令,它们分别返回0和1的退出代码时不执行任何操作。

cmake(1)获得了一个--trace-redirect=命令行选项,可用于将--trace输出重定向到文件而不是stderr。

的 cmake(1) --loglevel命令行选项已重命名,--log-level以使其与其他命令行选项的命名保持一致。--loglevel仍支持该选项以保持向后兼容性。

命令

add_test()命令学习了COMMAND_EXPAND_LISTS 导致COMMAND参数中的列表扩展的选项,包括生成器表达式创建的列表。

 file()命令学习了一个新的子命令, GET_RUNTIME_DEPENDENCIES它使您可以递归获取由可执行文件或库链接的库的列表。该子命令旨在替代GetPrerequisites。

find_file(), find_library(), find_path(), find_package()和 find_program() 命令已学会检查以下变量以控制搜索

CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH -控制搜索特定于cmake的环境变量。

CMAKE_FIND_USE_CMAKE_PATH -控制搜索特定于cmake的缓存变量。

CMAKE_FIND_USE_CMAKE_SYSTEM_PATH -控制搜索cmake平台的特定变量。

CMAKE_FIND_USE_PACKAGE_ROOT_PATH -控制搜索 _ROOT 变量。

CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH -控制搜索标准系统环境变量。

find_package() 命令已学会检查以下变量以控制搜索

CMAKE_FIND_USE_PACKAGE_REGISTRY -控制搜索cmake用户注册表。

message() 通过新命令学习压痕控制 CMAKE_MESSAGE_INDENT 变量。

target_precompile_headers() 添加了命令以指定要预编译的标头列表,以加快编译速度。变量

CMAKE_CUDA_RESOLVE_DEVICE_SYMBOLS 引入了变量来可选地初始化 CUDA_RESOLVE_DEVICE_SYMBOLS 目标属性。

CMAKE_ECLIpsE_RESOURCE_ENCODING 添加了变量以指定的资源编码 Eclipse CDT4 额外的发电机。

属性

BUILD_RPATH 和 INSTALL_RPATH 目标属性现在支持 generator expressions。

INSTALL_REMOVE_ENVIRONMENT_RPATH添加了target属性,以RPATH从目标中删除编译器定义的条目。此属性由 CMAKE_INSTALL_REMOVE_ENVIRONMENT_RPATH 变量。

PRECOMPILE_HEADERS增加了target属性,以指定要预编译的头列表,以加快编译时间。使用target_precompile_headers() 命令。

UNITY_BUILD 添加了target属性,以告知生成器批处理包含源文件,以加快编译速度。

VS_CONFIGURATION_TYPE 目标属性现在支持 generator expressions。

VS_DPI_AWARE添加了target属性,以告诉 Visual Studio GeneratorsEnableDpiAwareness 在.vcxproj文件中设置该属性。

XCODE_SCHEME_DEBUG_DOCUMENT_VERSIONING 目标属性被添加到告诉 Xcode生成器来设置schema选项的值 。Allow debugging when using document Versions Browser

模块

FindDoxygen 模组 doxygen_add_docs()命令获得了一个新USE_STAMP_FILE选项。如果显示此选项,则命令创建的自定义目标仅在自上次成功运行以来任何源文件已更改的情况下,才重新运行Doxygen。

FindGnuTLS 模块现在提供了导入的目标。

FindPackageHandleStandardArgs 模组 find_package_handle_standard_args()命令获得了一个新REASON_FAILURE_MESSAGE选项,可以指定一条给出失败原因的消息。

FindPkgConfig 模组 pkg_search_module()现在,宏定义了一个_MODULE_NAME包含第一个匹配模块名称的结果变量。

FindPython3 和 FindPython模块获得了控制ABIs将被搜索的选项。

FindPython3, FindPython2和 FindPython 模块现在支持通过缓存条目直接指定工件。

AUTOGEN

使用时 AUTOMOC,CMake现在为生成-p路径前缀选项moc。这样可以确保moc在不同的构建设置中输出文件是相同的(假设,由编译的标头moc位于include directory)。moc当源目录和/或构建目录是符号链接时,它还确保输出文件将正确编译。

moc可以通过设置新的路径前缀生成行为来配置CMAKE_AUTOMOC_PATH_PREFIX 变量和/或 AUTOMOC_PATH_PREFIX 目标属性。

CTEST

ctest(1)现在可以根据每个测试的硬件要求对测试进行序列化。有关详细信息,请参见硬件分配。

一个新的测试属性 SKIP_REGULAR_EXPRESSION,已添加。该属性类似于FAIL_REGULAR_EXPRESSION 和 PASS_REGULAR_EXPRESSION,但含义与 SKIP_RETURN_CODE。例如,在用户无法控制测试的返回码的情况下,这很有用。例如,在Catch2中,返回值是断言失败的次数,因此无法将其用于SKIP_RETURN_CODE。

CPack

CPack变量 CPACK_INSTALL_CMAKE_CONFIGURATIONS 添加了控制用于多配置CMake生成器的打包配置。

CPack DEB Generator现在可以根据Debian Policy Manual格式化通用文本(通常用作多个CPack生成器的描述)。见 CPACK_PACKAGE_DESCRIPTION_FILE 和 CPACK_DEBIAN__DESCRIPTION 变量。

CPack Archive Generator学会了.tar.zst 使用Zstandard压缩生成软件包。

不推荐使用和删除的功能

为策略添加了显式弃用诊断CMP0067 (CMP0066以下各项已弃用)。的cmake-policies(7) 手册说明所有策略的旧行为已被弃用,项目应移植到新行为。

CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY变量已弃用。使用CMAKE_FIND_USE_PACKAGE_REGISTRY 变量。

GetPrerequisites 该模块已被弃用,因此已被弃用 file(GET_RUNTIME_DEPENDENCIES)。

CPACK_INSTALL_SCRIPT不推荐使用该变量,而是使用新的,更准确的名称CPACK_INSTALL_SCRIPTS 变量。

其他变更

cmake(1) -C 选项现在使用以下命令评估初始缓存脚本 CMAKE_SOURCE_DIR 和 CMAKE_BINARY_DIR 设置为顶级源并构建树。

cmake(1) -E remove_directory命令行工具在获得指向目录的符号链接的路径后,现在仅删除该符号链接。它不再删除链接目录的内容。

ctest(1) --build-makeprogram 命令行选项现在指定使用以下命令配置项目时使用的make程序: Ninja生成器或Makefile生成器。

ExternalProject 模组 ExternalProject_Add()命令已更新,因此不会初始化任何子模块。查看政策GIT_SUBMODULES ""CMP0097。

FindGTest 模块已更新,可以识别由GTest 1.8.1生成的MSVC构建树。

project()命令不再删除版本组件中的前导零。查看政策CMP0096。

现在将Qt压缩帮助文件命名为CMake.qch,该文件名中不再包含发行版。就地升级CMake时,此文件的名称和位置将保持不变。IDE,帮助查看器等工具现在应能够在固定位置引用此文件,该位置在CMake升级中仍然有效。

RPATH条目将在用于安装的生成的CMake脚本中正确转义。查看政策CMP0095。

使用时 CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS 在Windows上,仅当提供符号的目标文件更新时,才自动更新自动生成的导出。

常见问题

运行CMake是否有产生更多“详细”编译的选项?

在Makefile生成器上,可以将Makefile变量VERBOSE设置为1。例如在UNIX上:

make VERBOSE=1

您也可以将CMAKE_VERBOSE_MAKEFILE设置为ON。

在Windows(nmake)上,您可以使用以下命令覆盖CMAKE_VERBOSE_MAKEFILE

nmake /S

在Unix上,您可以使用以下命令大体覆盖详细模式

make VERBOSE=""

如果您在Windows上使用Borland或NMake Makefile,则将看到以下行:

cl @c:\DOCUME~1\ANDY~1.KIT\LOCALS~1\Temp\nma03504

原因是Borland和Microsoft Visual Studio使程序对命令字符串的长度有所限制。他们通过将参数写入文件,然后将文件传递给程序来克服此限制。

如果您实际上想查看该命令的外观,请将CMAKE_START_TEMP_FILE和CMAKE_END_TEMP_FILE设置为“”-会被警告,但是,您无法使用-D在CMake命令行上将它们设置为变量。相反,请参见文件“ Modules / Platform / Windows.cmake”的最底部,并取消注释将这些变量设置为空字符串的行。

有没有一种方法可以在编译时跳过对依赖库的检查?

使用Makefile生成器

在* nix下使用Makefile生成器时,可以在目标名称后附加“ / fast”。例如:

make target_name/fast

在Windows下,使用反斜杠代替:

make target_name\fast

请注意,如果未实际构建被跳过的目标,则可能导致链接错误。仅当您知道自己在做什么时才使用它!

使用Visual Studio> = 7.1

如果您拥有Visual Studio .NET 7.1或更高版本,则可以使用本机选项右键单击一个项目,然后选择仅构建该项目。

使用Visual Studio <= 7.0

当您编译库时,CMake不会尝试编译所有依赖库,但会针对二进制目标进行编译。您无法避免这种情况,但是可以利用CTRL + F7手动为受影响的目标编译源文件,然后通过右键单击目标并选择“链接”来重新链接目标。您必须确保所有依赖库都是最新的,否则将受到Visual的缓慢检查的影响。

我在环境中设置了一个cmake变量,但是它没有任何改变。为什么?

CMake构建设置存储在与项目的构建树相对应的CMake缓存中。它们被称为CMake“缓存条目”,与命令外壳程序的环境变量无关。使用CMake GUI(在Windows上为CMakeSetup或在UNIX上为ccmake)或向导模式(cmake -i)来编辑高速缓存条目。还可以通过在首次运行以生成新的构建树时使用-D命令行参数cmake来为构建指定初始值。

CMake for mac更新日志

使用适用于VS 2017及更高版本的 Visual Studio GeneratorsCMAKE_GENERATOR_TOOLSET字段version=现在接受三组件的MSVC工具集版本,例如14.28.29910。见CMAKE_VS_PLATFORM_TOOLSET_VERSION 多变的。