【问题标题】:What is the purpose of a .cmake file?.cmake 文件的用途是什么?
【发布时间】:2018-03-09 10:49:08
【问题描述】:

我可能在谷歌上搜索错误,但我无法找到 .cmake 文件的用途。

我刚刚偶然发现 CMake 工具用于我必须使用的一个项目,但我很难理解它是如何工作的。我确实知道在包含CMakeLists.txt 的目录中运行 CMake 命令会执行该文件中的命令(以及子目录中包含的CMakeLists.txt 中的命令),但 .cmake 文件的用途更多模糊。

似乎它们用于定义函数/设置变量,然后在CMakeLists.txt 中使用,但我不确定。 CMake 工具如何使用它们?

【问题讨论】:

    标签: cmake


    【解决方案1】:

    您可以使用 include 命令包含它。与其他语言允许您将源文件拆分为模块或头文件的方式类似,它们可以包含函数定义、宏,然后可以跨多个 CmakeList 重用。

    https://cmake.org/cmake/help/v3.0/command/include.html

    请注意,您实际上可以包含任何文件,但通常使用 .cmake 扩展名。

    【讨论】:

    • 除此之外,.cmake 文件通常与模块捆绑在一起以提供一些可编写脚本的功能。通常通过-P ... 机制调用。
    • 我不太确定所有 .cmake 文件总是包含文件,其中一些似乎像脚本一样执行。例如,在我使用 Visual Studio 进行的构建中,它调用 cmake.exe" -DBUILD_TYPE=$(Configuration) -P cmake_install.cmake。 .cmake 文件是否被假定为内部文件(即,由脚本生成的文件,而不是您直接编辑的文件?),尽管该理论也不成立,因为 CMakeCache 具有扩展名 .txt。
    【解决方案2】:

    在此文件中,您可以定义可在 CMakeLists.txt 文件中使用的宏功能。但是 .cmake 文件还有更多其他应用程序。例如,如果您想提供一个库或工具,它们至少应该包含一个<name>Config.cmake,以便您的库可以与find_package() 命令一起使用。更多信息请访问CMake Wiki

    【讨论】:

      【解决方案3】:

      CMake 输入文件以“CMake 语言”编写在名为 CMakeLists.txt 或以 .cmake 文件扩展名结尾的源文件中。 https://cmake.org/cmake/help/latest/manual/cmake-language.7.html

      这意味着它们是一回事。 “CMakeLists.txt”只是默认名称。如果您决定将代码(CMake 在技术上只是另一种解释语言)拆分为单独的文件/模块(您可以将 include 相互拆分),它们显然不能都具有相同的名称,因此您将使用 " .cmake”扩展名。从理论上讲,您可以将“CmakeLists.txt”称为“CmakeLists.cmake”,但默认情况下cmake 将无法找到它,因此您必须将文件名作为命令行参数传递。所以这只是命名约定的不同。您可以将所有内容放入一个文件中,也可以放入另一个文件中,反之亦然。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-05-19
        • 1970-01-01
        • 2020-11-27
        • 2011-07-19
        相关资源
        最近更新 更多