CMakeLists

cmake_minimum_required(VERSION 3.0)

项目名称

project(boltDetect)

c++11标准

set(CMAKE_CXX_FLAGS “–std=c++11”)

opencv库

find_package(OpenCV)
include_directories(${OpenCV_INCLUDE_DIRS})

python库

include_directories(/usr/inlcude/python3.8)
link_directories(usr/lib/x86_64-linux-gnu-python3.8-config)

包含源文件

set(EXECUTABLE_OUTPUT_PATH ./bin)
aux_source_directory(. DIR_SRCS)

指定生成目标

set(EXECUTABLE_OUTPUT_PATH ./bin)
add_executable(exec ${DIR_SRCS})

链接库

target_link_libraries(exec ${OpenCV_LIBS} /usr/lib/x86_64-linux-gnu/libpython3.8.so)

### CMakeLists.txt 文件概述 CMakeLists.txt 是用于描述 CMake 构建过程和项目配置的文件[^2]。该文件包含一系列命令、变量设置以及流程控制结构,旨在指导 CMake 生成适用于特定平台和编译器的构建系统文件。 #### 创建简单的 CMakeLists.txt 文件 对于初学者而言,可以从一个简易版本入手: ```cmake # 设置最低支持的 CMake 版本 cmake_minimum_required(VERSION 3.10) # 定义项目名称及其默认语言 project(MyProject VERSION 1.0 LANGUAGES CXX) # 添加可执行文件 target 名称为 myapp, 使用 main.cpp 源码文件 add_executable(myapp src/main.cpp) ``` 此段代码展示了如何创建最基础的 `CMakeLists.txt` 文件来定义最小化的 C++ 工程[^1]。 #### 配置并生成动态库 当目标是生成共享库而非独立的应用程序时,则需调整上述脚本如下所示: ```cmake # 设定所需的最低 cmake 版本号 cmake_minimum_required(VERSION 3.10) # 初始化工程名为 MyLibrary 并指定其主要编程语言为 C++ project(MyLibrary VERSION 1.0 LANGUAGES CXX) # 将源文件列表赋给变量 SOURCES set(SOURCES src/hello.cpp) # 声明要创建的名字叫 hello 的共享库 (即 .so 或者 .dll),并将 SOURCES 中列出的所有 cpp 文件作为输入传递给这个新库 add_library(hello SHARED ${SOURCES}) ``` 这段脚本不仅指定了项目的元数据,还通过调用 `add_library()` 函数告知 CMake 要构建的是一个共享库而不是应用程序,并且给出了构成该库的具体实现文件路径[^3]。 #### 整合第三方依赖项 如果项目依赖于外部库或其他资源,在 `CMakeLists.txt` 中也需要相应声明这些关系: ```cmake find_package(MathAPI REQUIRED) # 查找 MathAPI 库的位置;如果没有找到则报错退出 include_directories(${MathAPI_INCLUDE_DIRS}) # 向编译器提供头文件所在目录的信息 target_link_libraries(myapp PRIVATE MathAPI::MathAPI) # 把链接到 mathapi 这个库的任务分配给了 myapp 可执行文件的目标对象 ``` 这里展示了一个典型场景下引入第三方组件的方式——先利用 `find_package()` 寻址所需库的确切位置,再经由 `include_directories()` 和 `target_link_libraries()` 来完成实际集成工作[^5]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值