您的位置 首页 编程知识

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

CMakeLists.txt用于定义项目结构、源文件、编译选项和依赖库。1. 指定最低CMake版本和项目名:…


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_requi(VERSION 3.10)

project(HelloWorld)

立即学习“”;

add_executable(hello mn.cpp)

说明:

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

多个源文件的情况

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

cmake_minimum_required(VERSION 3.10)

project(MyApp)

add_executable(my 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智能写作平台,支持语法、拼写自动纠错,一键改写、润色你的法语作文。

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

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)

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

以上就是++怎么写一个CMakeLists.txt文件_c++ CMakeLists.txt写法的详细内容,更多请关注php中文网其它相关文章!

相关标签:

本文来自网络,不代表四平甲倪网络网站制作专家立场,转载请注明出处:http://www.elephantgpt.cn/15311.html

作者: nijia

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

联系我们

联系我们

18844404989

在线咨询: QQ交谈

邮箱: 641522856@qq.com

工作时间:周一至周五,9:00-17:30,节假日休息

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部