先祝大家开工大吉,这篇策划一下CMakelists.txt,它依托在Cmake里,在大型工程、平台兼容方面非常好用的C++项目编译工具,再此先对它做一个简短的介绍。
目录
一、CMakelists.txt简介
二、使用示例
三、总结
一、CMakelists.txt简介
CMakelists.txt是Cmake的配置文件,用于描述编译方式和项目依赖。在windows下CMake 会读取 CMakeLists.txt 中的设置,并生成项目的 makefile 或 Visual Studio 工程文件,其中makefile时linux下的C++项目编译文件,不了解makefile请看这篇:
https://bobowen.blog.csdn.net/article/details/124248066
Visual Studio在windows平台下独霸一方,使用Cmake生成可编译的 Visual Studio工程文件很方便。并且,使用 CMake 可以跨平台编译项目,例如 Windows、Linux 和 macOS。CMakeLists.txt 中的命令包括项目名称、编译器选项、源文件列表、链接库依赖等。使用 CMake 可以很方便地管理项目的依赖关系,并且可以通过调用 cmake 命令来生成项目的 makefile 或者是 IDE 的工程文件。
那些使用CMakelists.txt的情况,首要的就是跨平台,一个项目可以只用一份编译脚本就ok。然后就是可以管理项目依赖、支持多种编译器(GCC、Clang、Visual Studio )、支持多种构建类型、支持第三方库(Opencv、Boost等)。
-
跨平台编译项目:CMake 可以根据不同平台的环境自动生成对应的 makefile 或 Visual Studio 工程文件,从而方便地在 Windows、Linux 和 macOS 等平台上编译项目。
-
管理项目依赖:CMake 可以通过 CMakeLists.txt 中的命令来管理项目的依赖关系,例如包含头文件目录、链接库文件等。
-
支持多种编译器:CMake 支持多种编译器,例如 GCC、Clang、Visual Studio 等,可以根据需要在 CMakeLists.txt 中设置对应的编译器选项。
-
支持多种构建类型:CMake 支持多种构建类型,例如 Release、Debug、Profile 等,可以根据需要在 CMakeLists.txt 中设置对应的构建类型选项。
-
支持第三方库:CMake 支持在项目中使用第三方库,例如 Boost、OpenCV 等,可以在 CMakeLists.txt 中配置相关的头文件目录和库文件。
Cmakelists.txt的风格:
cmake_minimum_required(VERSION 3.0)
project(myproject VERSION 1.0)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED True)
add_executable(myproject main.cpp)
target_link_libraries(myproject)
project()
:设置项目名称和版本号。cmake_minimum_required()
:设置 CMake 的最低版本要求。set()
:设置变量的值。add_executable()
:添加可执行文件。add_library()
:添加库文件。target_link_libraries()
:链接库文件。include_directories()
:添加头文件目录。
二、使用示例
src中有main.cpp include中有add.h和sub.h lib中有add.cpp与sub.cpp编好的mylib.lib
add.h:
#pragma once
int add(int a, int b);
add.cpp:
#include"add.h"
int add(int a, int b)
{
return a+b;
}
sub.h:
#pragma once
int sub(int a, int b);
sub.cpp:
#include"sub.h"
int sub(int a, int b)
{
return a-b;
}
我们将add和sub编程mylib.lib,注意mylib为你的lib名称,在我的例子里是IDATest.lib,在visual里就可以。
Cmakelist.txt的书写:
cmake_minimum_required(VERSION 3.10)
project(MyProject)
include_directories(include)
add_executable(main src/main.cpp)
target_link_libraries(main IDATest.lib)
我们在同级目录下创建build方便存入编译好的文件,最终的文件目录格式如下:
然后就是Cmake的安装,需要加到环境变量中,看下面链接:
CMake的安装(超级详细)_小码1111的博客-CSDN博客_cmake安装
https://wendy.blog.csdn.net/article/details/123029415?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-1-123029415-blog-115654082.pc_relevant_vip_default&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-1-123029415-blog-115654082.pc_relevant_vip_default&utm_relevant_index=2
cmd进入build,输入命令 camke .. 注意中间有空格。
大功告成。
三、总结
本篇为CMakelist.txt入坑简单介绍,后续有时间给大家带来其语法的详细介绍。