我正在尝试使用CMake来编译opencv。
我正在阅读tutorial,但无法理解什么是CMakeLists文件以及它如何连接到CMake的gui?
也无法理解什么是makefile,它们是否与CMakeLists相同?
我最终用visual-studio打开哪个文件?
答案 0 :(得分:122)
我不知道Windows(从未使用过它),但在Linux系统上你只需要创建一个构建目录(在顶级源目录中)
mkdir build-dir
进去吧
cd build-dir
然后运行cmake
并指向父目录
cmake ..
最后运行make
make
请注意make
和cmake
是不同的程序。 cmake
是Makefile
生成器,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
命令找到您安装的软件包,该命令将导出库目标名称,并将其链接到您自己的目标。