【问题标题】:How do I use CMake?如何使用 CMake?
【发布时间】:2011-12-13 03:54:45
【问题描述】:

我正在尝试使用 CMake 来编译 opencv。

我正在阅读tutorial,但不明白什么是 CMakeLists 文件以及它是如何连接到 CMake 的 gui 的?

也不明白什么是makefile,它们和CMakeLists一样吗?

最后我用visual-studio打开的是哪个文件?

【问题讨论】:

  • 如果问题与 Windows 有关,则应在其中提及(可能带有windows 标签)
  • 关于 CMake 3.13.3、平台 Windows 和 IDE Visual Studio 2017,我建议:wikihow.com/Use-CMake问候。

标签: c++ visual-studio cmake


【解决方案1】:

我不了解 Windows(从未使用过),但在 Linux 系统上,您只需创建一个构建目录(在顶部源目录中)

mkdir build-dir

进去

cd build-dir

然后运行cmake并指向父目录

cmake ..

最后运行make

make

注意make 和cmake 是不同的程序。 cmake 是 Makefile 生成器,make 实用程序由 Makefile 文本文件管理。请参阅 cmake 和 make 维基百科页面。

注意:在 Windows 上,cmake 可能会运行,因此可能需要以不同方式使用。您需要阅读文档(就像我对 Linux 所做的那样)

【讨论】:

  • 很好的答案;我不知道如何在子目录中获取构建文件。我不明白为什么官方文档没有提到这一点。
  • 这在 Linux 下工作,但在 Windows 上它会在检测 C/C++ 编译器时中断。任何想法如何做到这一点?
  • 这取决于您特定计算机的设置方式。检查您的PATH variable 是否正确。顺便说一句,我从未在我的生活中使用过 Windows(并在 1974 年编写了我的第一个程序)
  • 这么多的赞成票,答案却没有说明 Visual Studio。
  • @byx: AFAIK,Visual Studio 是专有的 C++ 编译器(与 Visual Studio Code 不同,它是一个源代码编辑器),仅适用于 Windows。我的答案是 Linux
【解决方案2】:

CMake 获取一个 CMakeList 文件,并将其输出为特定于平台的构建格式,例如Makefile、Visual Studio 等。

您首先在 CMakeList 上运行 CMake。如果您使用的是 Visual Studio,则可以加载输出项目/解决方案。

【讨论】:

  • 什么是 Makefile?在哪里可以找到 visualstudio 的项目/解决方案文件?
  • 运行 cmake(或 CMakeSetup 并点击生成)后,您应该能够在项目树的某处找到 Makefile(如果是 unix)或项目文件。可以在 CMakeList 中指定位置。这是我在 CMake wiki 上找到的简短演示文稿,您可能会觉得有帮助:elpauer.org/stuff/learning_cmake.pdf
  • CMake 使用您选择的构建格式配置整个项目,这意味着它设置了所有内容,以便您可以使用例如 Visual Studio 进行编译。默认情况下(至少在 linux 上),它会创建一个使用 Make 的项目。 Make 用于实际构建项目,而不是配置或设置它。所以首先你必须使用 CMake 来设置项目,然后运行 ​​Make 来编译和构建东西。
【解决方案3】:

是的,cmake 和 make 是不同的程序。 cmake 是(在 Linux 上)一个 Makefile 生成器(而 Makefile-s 是驱动 make 实用程序的文件)。还有其他 Makefile 生成器(特别是 configure 和 autoconf 等...)。您还可以找到其他build automation 程序(例如ninja)。

【讨论】:

  • 我认为这有点令人困惑。 cmake 是一个构建系统生成器,它可以生成的一个是makefile(如gnu.org/software/make)。但是,它可以生成许多其他系统,它们不是“Makefile 生成器”。在 macos(可能还有其他地方)上,如果你运行 cmake --help,它会给你一个很长的生成器列表。例如,cmake 可以生成 Xcode 项目——与 make 无关。
【解决方案4】:

CMake(跨平台制作)是一个构建系统生成器。它不会构建您的源代码,而是生成构建系统所需的东西:构建脚本。这样做您不需要编写或维护特定于平台的构建文件。 CMake 使用相对较高级别的CMake language,通常写在CMakeLists.txt 文件中。使用第三方库时的一般工作流程通常归结为以下命令:

cmake -S thelibrary -B build
cmake --build build
cmake --install build

第一行称为配置步骤,这会在您的系统上生成构建文件。 -S(ource) 是库源,-B(uild) 文件夹。 CMake 会根据您的系统回退以生成构建。在 Windows 上是 MSBuild,在 Linux 上是 GNU Makefiles。您可以使用-G(enerator) 参数指定构建,例如:

cmake -G Ninja -S libSource -B build

此步骤结束,生成构建脚本,如Makefile、*.sln文件等在构建目录中。

第二行调用实际的构建命令,就像在构建文件夹上调用make。

第三行安装库。如果您使用的是 Windows,则可以通过 cmake --open build 快速打开生成的项目。

现在您可以使用 CMake 配置的项目中已安装的库,编写您自己的 CMakeLists.txt 文件。为此,您需要创建一个目标并使用find_package 命令找到您安装的包,该命令将导出库目标名称,并将它们链接到您自己的目标。

【讨论】:

    【解决方案5】:

    来自 Windows 终端的 Cmake:

    mkdir build
    cd build/
    cmake ..
    cmake --build . --config Release
    ./Release/main.exe
    

    【讨论】:

    • 如果你想在 build 目录中的一个单独的 installdir 子目录中包含文件,你可以这样做:cmake -DCMAKE_INSTALL_PREFIX=./installdir ..
    【解决方案6】:

    关于 CMake 3.13.3、平台 Windows 和 IDE Visual Studio 2017,我建议guide。简而言之,我建议:
    1. 下载cmake > 解压 > 执行。
    2. 例如下载 GLFW >​​ 解压 > 在文件夹 Build 内创建。
    3. 在 cmake 中浏览“源”> 浏览“构建”> 配置和生成。
    4. 在 Visual Studio 2017 中构建您的解决方案。
    5. 获取二进制文件。
    问候。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-10-02
      • 2014-11-18
      • 1970-01-01
      • 2019-12-22
      • 2010-11-07
      • 2010-12-21
      • 2020-11-21
      相关资源
      最近更新 更多