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/实现,支持模块化构建。

写一个 CMakeLists.txt 文件是为了让 CMake 能够正确地构建你的 C++ 项目。它定义了项目的结构、源文件、编译选项、依赖库等信息。下面是一个从简单到逐步扩展的写法说明,帮助你快速上手。
适用于单个源文件的简单程序。
cmake_minimum_required(VERSION 3.10)
project(HelloWorld)
立即学习“C++免费学习笔记(深入)”;
add_executable(hello main.cpp)
说明:
如果你的项目包含多个 .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)
或更推荐的方式(作用于特定目标):
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++速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号