贝利信息

c++如何使用cmake编译项目_c++ cmake编写入门【教程】

日期:2026-01-24 00:00 / 作者:穿越時空
最简可用CMakeLists.txt需三步:cmake_minimum_required(VERSION 3.10)、project(MyApp LANGUAGES CXX)、add_executable(myapp main.cpp);头文件用target_include_directories(myapp PRIVATE include)指定路径;链接库须find_package()后显式target_link_libraries();构建务必在独立build目录中执行。

直接用 CMake 编译 C++ 项目,核心不是写“教程”,而是让 CMakeLists.txt 正确描述你的源码结构、依赖和构建目标——写错一行 add_executable() 或漏掉 target_include_directories(),就会报错或链接失败。

怎么写最简可用的 CMakeLists.txt

从单个 main.cpp 开始,避免一上来就加子目录、库、测试。CMake 版本声明、项目名、可执行文件定义三步必须齐:

头文件找不到?重点查 target_include_directories()

编译报错 fatal error: xxx.h: No such file or directory,90% 是没告诉 CMake 去哪找头文件。不要用全局 include_directories()(已过时且污染所有 target),改用 target 级别设置:

链接第三方库(如 pthreadfmt)必须分两步

只写 find_package(fmt REQUIRED) 不够,也不等于自动链接——CMake 只负责找到库位置,链接动作要显式触发:

构建命令别硬记,用好 build/ 目录隔离

永远不在源码目录运行 cmake .。CMake 生成的中间文件(CMakeCache.txtMakefile、对象文件)会污染源码树,且切换编译器或配置时极易出错:

真正卡住人的地方,往往不是语法,而是路径是否真实存在、target 名称是否拼错、PRIVATE/PUBLIC 是否用反、或者 find_package() 找到的库实际没安装——这些错误信息藏在 cmake .. 输出里,而不是 make 阶段。