如何在Windows系统下使用CMake编译C++代码
CMake是一款跨平台的开源构建工具,可以用于自动生成各种平台的makefile、VS项目以及Xcode项目等,能够方便地管理、构建和测试C++代码。
下面将介绍如何在Windows系统下使用CMake编译C++代码,并且通过实例演示其应用场景。
准备工作
在开始使用CMake之前,需要安装以下软件:
- CMake:可以从官网 https://cmake.org/ 下载最新版本的安装包进行安装。
- Visual Studio:可以从微软官网 https://visualstudio.microsoft.com/ 下载Visual Studio 2019社区版或更高版本。
编写CMakeLists.txt文件
在工程目录下新建CMakeLists.txt文件,该文件是CMake的配置文件,用于描述所需的库文件、头文件、源文件以及链接库等信息。
例如,在某个工程的源码目录中,有以下4个源文件:hello.cpp、greet.cpp、main.cpp和CMakeLists.txt。其中,hello.cpp和greet.cpp都是库文件,main.cpp是可执行文件的入口。CMakeLists.txt文件如下所示:
Copy Code# CMake 最低版本号要求
cmake_minimum_required (VERSION 3.5)
# 项目信息
project (Demo)
# 加入一个配置文件用于处理 CMake 对源码的设置
configure_file (
"${PROJECT_SOURCE_DIR}/config.h.in"
"${PROJECT_BINARY_DIR}/config.h"
)
# 是否使用自己的 MathFunctions 库
option (USE_MYMATH "Use provided math implementation" ON)
# 是否加入 MathFunctions 库
if (USE_MYMATH)
include_directories ("${PROJECT_SOURCE_DIR}/mymath")
add_subdirectory (mymath)
set (EXTRA_LIBS ${EXTRA_LIBS} MathFunctions)
endif (USE_MYMATH)
# 查找当前目录下的所有源文件
# 并将名称保存到 DIR_SRCS 变量
aux_source_directory (. DIR_SRCS)
# 指定生成目标
add_executable (Demo ${DIR_SRCS})
# 添加链接库
target_link_libraries (Demo ${EXTRA_LIBS})
编译项目
在CMakeLists.txt所在目录下新建build文件夹,并进入该目录,执行以下命令:
Copy Codecmake ..
该命令会自动生成Visual Studio的工程文件。接着,执行以下命令:
Copy Codecmake --build . --config Release
该命令会在Release模式下编译代码,并生成可执行文件。
应用场景
CMake的应用非常广泛,例如可以用于:
- 构建不同平台上的项目:CMake可以帮助我们自动生成各种平台的makefile、VS项目以及Xcode项目等,从而方便地构建和管理C++代码。
- 管理第三方库:通过CMakeLists.txt文件,可以自动下载、编译和链接第三方库,避免了手动复制、粘贴代码的麻烦。
- 统一管理各平台下的工程文件:通过CMake的跨平台性,可以简化工程文件的管理,让开发人员更加关注代码的实现细节。
示例
假设我们要在Windows系统下编译并运行一个简单的C++应用程序,该程序调用了OpenCV图像处理库。我们需要先安装OpenCV,并配置好环境变量。
然后,在工程目录下新建CMakeLists.txt文件,内容如下所示:
Copy Codecmake_minimum_required(VERSION 3.5)
project(opencv_test)
# 设置 C++ 编译器为 clang 或 gcc
# 如果使用 Visual Studio,可以将这段代码注释掉
set(CMAKE_C_COMPILER "/usr/bin/clang")
set(CMAKE_CXX_COMPILER "/usr/bin/clang++")
# 添加 OpenCV 库
find_package( OpenCV REQUIRED )
# 添加编译选项
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wall -O2")
# 添加可执行文件目标
add_executable(opencv_test opencv_test.cpp)
# 链接 OpenCV 库
target_link_libraries(opencv_test ${OpenCV_LIBS})
其中,CMake会自动查找OpenCV库,并且链接到最终的可执行文件中。
最后,在命令行中进入工程目录下的build文件夹,执行以下命令:
Copy Codecmake ..
cmake --build . --config Release
./opencv_test.exe
即可在Windows系统下编译、链接并运行该程序。
本站地址: https://www.ffyonline.com/pageSingle/articleOneWeb/39