CMakeLists.txt生成器

按项目类型、C++标准、依赖库勾选生成 CMakeLists.txt 模板,内置 12 种常用 find_package 依赖库、编译选项和多子目录组织方式,附带对应的 build 命令。

免费在线工具
Loading…

使用说明

填写项目名称、版本号,选择项目类型(可执行文件/静态库/动态库)、C++ 标准(C++11~C++23)、最低 CMake 版本。「源文件列表」一行填一个路径,留空则用 file(GLOB_RECURSE ...) 自动收集 src 目录下的源文件;「头文件目录」逗号分隔多个路径。「依赖库」区可勾选 Boost、OpenCV、OpenSSL、Qt5、gRPC、Protobuf、fmt、spdlog、nlohmann_json、CURL、ZLIB、Threads 共 12 个常用库,也可以在「自定义依赖」里补充其他 find_package 依赖名。「编译选项」可勾选 -Wall -Wextra、-O2 优化、-g 调试符号、Address Sanitizer。勾选「多子目录项目」后源文件列表会被替换成 add_subdirectory 子目录列表。点击「生成 CMakeLists.txt」输出内容,下方同步给出对应的 mkdir build && cmake .. && make 构建命令,也可以点三个预设按钮快速体验简单可执行文件、带 OpenCV 库、多子目录三种典型配置。

功能介绍

  • 支持可执行文件、静态库、动态库三种项目类型,C++11 到 C++23 五档标准可选
  • 源文件可手动逐行填写,留空则自动用 file(GLOB_RECURSE ...) 收集 src 目录
  • 内置 Boost、OpenCV、OpenSSL、Qt5、gRPC、Protobuf、fmt、spdlog、nlohmann_json、CURL、ZLIB、Threads 12 个常用库的 find_package 勾选项,并自动生成对应的 target_link_libraries 链接名(如 Threads::Threads)
  • 支持自定义依赖名称补充勾选列表之外的库
  • 编译选项可勾选 -Wall -Wextra、-O2、-g 调试符号、Address Sanitizer(自动追加对应的 CXX_FLAGS)
  • 可切换为多子目录项目模式,用 add_subdirectory 组织 src/lib/tests 等子目录,并同步给出构建命令

使用场景

新建 C++ 项目脚手架
新建项目时快速生成一份带常用编译选项的 CMakeLists.txt,避免每次手写基础模板
接入 OpenCV/Qt5 等第三方库
用「带OpenCV库」预设或手动勾选依赖,避免手写 find_package 和 target_link_libraries 时组件名拼错
开启 Address Sanitizer 排查内存问题
勾选 Address Sanitizer 选项快速生成带 ASan 编译标志的配置,用于调试期间的内存越界/泄漏排查
多模块项目目录组织
为拆分成 src/lib/tests 多个子目录的项目生成 add_subdirectory 骨架配置

常见问题

这个工具生成的是 Makefile 还是 CMakeLists.txt?
生成的是 CMakeLists.txt(CMake 项目配置文件),需要通过 cmake .. 命令再生成实际的 Makefile,工具下方也给出了 mkdir build && cmake .. && make 的完整构建命令
源文件列表留空会怎样?
留空时会生成 file(GLOB_RECURSE SOURCES src/*.cpp src/*.cc src/*.cxx) 自动收集 src 目录下的所有源文件,适合文件较多、不想逐个列出的场景
依赖库链接名是怎么确定的?
大部分库按 库名::库名 生成(如 OpenCV::OpenCV),Threads 固定为 Threads::Threads,nlohmann_json 固定为 nlohmann_json::nlohmann_json,Boost 和 Qt5 支持勾选具体组件(如 Boost::filesystem、Qt5::Widgets)
多子目录模式和普通模式有什么区别?
勾选「多子目录项目」后,源文件设置会被 add_subdirectory 子目录列表取代,适合每个子目录有自己 CMakeLists.txt 的大型项目结构,不再生成 add_executable/add_library 目标