首页 > 后端开发 > C++ > 正文

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

冰火之心
发布: 2025-10-05 21:36:02
原创
500人浏览过
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)

腾讯Effidit
腾讯Effidit

腾讯AI Lab开发的AI写作助手,提升写作者的写作效率和创作体验

腾讯Effidit 65
查看详情 腾讯Effidit

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

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++++怎么写一个CMakeLists.txt文件_c++ CMakeLists.txt写法的详细内容,更多请关注php中文网其它相关文章!

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

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

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

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