我如何使用CMake?

时间:2011-10-22 12:46:04

标签: c++ visual-studio cmake

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

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

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

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

6 个答案:

答案 0 :(得分:122)

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

mkdir build-dir

进去吧

cd build-dir

然后运行cmake并指向父目录

cmake ..

最后运行make

make

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

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

答案 1 :(得分:26)

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

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

答案 2 :(得分:9)

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

答案 3 :(得分:0)

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

答案 4 :(得分:0)

Windows终端上的cmake:

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

答案 5 :(得分:0)

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

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

第一行称为配置步骤,它将在系统上生成构建文件。 -S(源)是库源,是-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命令找到您安装的软件包,该命令将导出库目标名称,并将其链接到您自己的目标。