0

0

c++怎么写一个CMakeLists.txt文件_c++ CMakeLists.txt写法

冰火之心

冰火之心

发布时间:2025-10-05 21:36:02

|

517人浏览过

|

来源于php中文网

原创

CMakeLists.txt用于定义项目结构、源文件、编译选项和依赖库。1. 指定最低CMake版本和项目名:cmake_minimum_required(VERSION 3.10),project(MyProject)。2. 设置C++标准:set(CMAKE_CXX_STANDARD 17)。3. 使用add_executable添加可执行目标并列出源文件,或通过set(SOURCES ...)管理多个.cpp文件。4. 推荐用target_include_directories为特定目标添加头文件路径,如PRIVATE include目录。5. 通过target_link_libraries链接系统库(如m)或第三方库(如OpenCV),需先find_package或add_subdirectory引入。6. 对于复杂项目,可在子目录创建单独的CMakeLists.txt,使用add_library定义静态/动态库,并在主文件中通过add_subdirectory和target_link_libraries集成。完整示例包含main.cpp、include/头文件与src/实现,支持模块化构建。

c++怎么写一个cmakelists.txt文件_c++ cmakelists.txt写法

写一个 CMakeLists.txt 文件是为了让 CMake 能够正确地构建你的 C++ 项目。它定义了项目的结构、源文件、编译选项、依赖库等信息。下面是一个从简单到逐步扩展的写法说明,帮助你快速上手。

最基本的 CMakeLists.txt

适用于单个源文件的简单程序。

cmake_minimum_required(VERSION 3.10)

project(HelloWorld)

立即学习C++免费学习笔记(深入)”;

add_executable(hello main.cpp)

说明:

  • cmake\_minimum\_required:指定所需 CMake 最低版本。
  • project:定义项目名称,可选指定语言(默认支持 CXX)。
  • add\_executable:生成可执行文件,参数是目标名和源文件列表。

多个源文件的情况

如果你的项目包含多个 .cpp 文件,只需把它们全部列在 add_executable 后面。

cmake_minimum_required(VERSION 3.10)

project(MyApp)

add_executable(myapp main.cpp utils.cpp helper.cpp)

也可以用变量来组织源文件,更清晰:

set(SOURCES

main.cpp

utils.cpp

helper.cpp

)

add_executable(myapp ${SOURCES})

添加编译选项和标准支持

现代 C++ 通常使用 C++17 或 C++20,可以通过以下方式设置:

set(CMAKE_CXX_STANDARD 17)

set(CMAKE_CXX_STANDARD_REQUIRED ON)

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra")

或者针对特定目标设置:

target_compile_features(myapp PRIVATE cxx_std_17)

包含头文件目录

如果头文件不在源文件同目录下,比如放在 include/ 目录中:

include_directories(include)

倍塔塞司
倍塔塞司

AI职业规划、AI职业测评、定制测评、AI工具等多样化职业类AI服务。

下载

或更推荐的方式(作用于特定目标):

target_include_directories(myapp PRIVATE include)

链接外部库

比如你需要链接 math 库(-lm)或自定义静态/动态库:

target_link_libraries(myapp m) # 链接数学库

如果是你自己生成的库或第三方库,先 find_package 或 add_subdirectory,再链接。

例如使用 OpenCV:

find_package(OpenCV REQUIRED)

target_link_libraries(myapp ${OpenCV_LIBS})

target_include_directories(myapp PRIVATE ${OpenCV_INCLUDE_DIRS})

完整示例:含子目录和库

项目结构:

myproject/
├── CMakeLists.txt
├── main.cpp
├── include/
│   └── mylib.h
└── src/
    └── mylib.cpp

根目录 CMakeLists.txt:

cmake_minimum_required(VERSION 3.10)

project(MyProject)

set(CMAKE_CXX_STANDARD 17)

include_directories(include)

add_executable(myapp main.cpp src/mylib.cpp)

target_include_directories(myapp PRIVATE include)

或拆分为子模块:

# 在 src/CMakeLists.txt 中

add_library(mylib mylib.cpp)

target_include_directories(mylib PUBLIC ../include)

# 在主 CMakeLists.txt 中

add_subdirectory(src)

target_link_libraries(myapp mylib)

基本上就这些。根据项目复杂度逐步添加功能即可。

相关文章

c++速学教程(入门到精通)
c++速学教程(入门到精通)

c++怎么学习?c++怎么入门?c++在哪学?c++怎么学才快?不用担心,这里为大家提供了c++速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
go语言 注释编码
go语言 注释编码

本专题整合了go语言注释、注释规范等等内容,阅读专题下面的文章了解更多详细内容。

2

2026.01.31

go语言 math包
go语言 math包

本专题整合了go语言math包相关内容,阅读专题下面的文章了解更多详细内容。

1

2026.01.31

go语言输入函数
go语言输入函数

本专题整合了go语言输入相关教程内容,阅读专题下面的文章了解更多详细内容。

1

2026.01.31

golang 循环遍历
golang 循环遍历

本专题整合了golang循环遍历相关教程,阅读专题下面的文章了解更多详细内容。

0

2026.01.31

Golang人工智能合集
Golang人工智能合集

本专题整合了Golang人工智能相关内容,阅读专题下面的文章了解更多详细内容。

1

2026.01.31

2026赚钱平台入口大全
2026赚钱平台入口大全

2026年最新赚钱平台入口汇总,涵盖任务众包、内容创作、电商运营、技能变现等多类正规渠道,助你轻松开启副业增收之路。阅读专题下面的文章了解更多详细内容。

76

2026.01.31

高干文在线阅读网站大全
高干文在线阅读网站大全

汇集热门1v1高干文免费阅读资源,涵盖都市言情、京味大院、军旅高干等经典题材,情节紧凑、人物鲜明。阅读专题下面的文章了解更多详细内容。

73

2026.01.31

无需付费的漫画app大全
无需付费的漫画app大全

想找真正免费又无套路的漫画App?本合集精选多款永久免费、资源丰富、无广告干扰的优质漫画应用,涵盖国漫、日漫、韩漫及经典老番,满足各类阅读需求。阅读专题下面的文章了解更多详细内容。

67

2026.01.31

漫画免费在线观看地址大全
漫画免费在线观看地址大全

想找免费又资源丰富的漫画网站?本合集精选2025-2026年热门平台,涵盖国漫、日漫、韩漫等多类型作品,支持高清流畅阅读与离线缓存。阅读专题下面的文章了解更多详细内容。

19

2026.01.31

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Java 教程
Java 教程

共578课时 | 54.3万人学习

国外Web开发全栈课程全集
国外Web开发全栈课程全集

共12课时 | 1.0万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号