我如何使用CMake?

lit*_*tuk 94 c++ cmake visual-studio

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

我正在阅读教程,但无法理解什么是CMakeLists文件,它是如何连接到CMake的gui的?

也无法理解什么是makefile,它们是否与CMakeLists相同?

我最终用visual-studio打开哪个文件?

Bas*_*tch 137

我不知道Windows(从未使用过它),但在Linux系统上你只需要创建一个构建目录(在顶级源目录中)

mkdir build-dir
Run Code Online (Sandbox Code Playgroud)

进去吧

cd build-dir
Run Code Online (Sandbox Code Playgroud)

然后运行cmake并指向父目录

cmake ..
Run Code Online (Sandbox Code Playgroud)

最后跑 make

make
Run Code Online (Sandbox Code Playgroud)

请注意,makecmake有不同的程序.cmake是一个Makefile生成器,该make实用程序由Makefile文本文件管理.请参阅 cmake制作维基百科页面.

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

  • 很好的答案; 我无法弄清楚如何在子目录中获取构建文件.我不明白为什么官方文件没有提到这一点. (4认同)
  • 如此多的赞成票和答案对 Visual Studio 一无所知。 (2认同)
  • @byx:据我所知,Visual Studio 是一个专有的 C++ 编译器(与 Visual Studio Code 不同,它是一个源代码编辑器),仅适用于 Windows。我的答案是针对Linux的 (2认同)

hol*_*olt 29

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

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

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

Bas*_*tch 9

是的,cmakemake是不同的程序.cmake是(在Linux上)一个Makefile生成器(和Makefile -s是驱动该make实用程序的文件).还有其他Makefile生成器(特别是configure和autoconf等...).您可以找到其他构建自动化程序(例如忍者).


小智 9

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

cmake -S thelibrary -B build
cmake --build build
cmake --install build
Run Code Online (Sandbox Code Playgroud)

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

cmake -G Ninja -S libSource -B build
Run Code Online (Sandbox Code Playgroud)

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

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

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

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


Bur*_*rak 7

从 Windows 终端进行 Cmake:

mkdir build
cd build/
cmake ..
cmake --build . --config Release
./Release/main.exe
Run Code Online (Sandbox Code Playgroud)