CMake教程6:CMake的一些实用小技巧

简介: CMake教程6:CMake的一些实用小技巧

设置lib输出目录

set(LIBRARY_OUTPUT_PATH ${CMAKE_SOURCE_DIR}/bin)
复制代码

将生成的lib放在bin目录下

设置app输出目录

set(EXECUTABLE_OUTPUT_PATH ${CMAKE_SOURCE_DIR}/bin)
复制代码

将生成的可执行程序放在bin目录下

自动收集目录下的源代码

  • 方式1:
aux_source_directory(./ SRC)
复制代码

自动将指定目录下的源文件路径,以list的形式存放在指定的变量中。

缺点: 无法递归,但可以配合foreach实现、只能检索*.cpp文件。

  • 方式2:
# 将所有的头文件收集起来放在src变量里面,无法递归
file(GLOB src ${CMAKE_CURRENT_LIST_DIR}/*.h)
# 将所有的头文件、源文件收集起来放在src变量里面,无法递归
file(GLOB src ${CMAKE_CURRENT_LIST_DIR}/*.h ${CMAKE_CURRENT_LIST_DIR}/*.cpp)
# 将所有的头文件收集起来放在src变量里面,可以递归文件
file(GLOB_RECURSE src ${CMAKE_CURRENT_LIST_DIR}/*.h)
复制代码

添加源文件2种方式

  • 方式1
set(LIB_NAME "lib")
aux_source_directory(./ SRC)
# 在add的时候添加source
add_library(${LIB_NAME} ${SRC})
复制代码
  • 方式2
set(LIB_NAME "lib")
add_library(${LIB_NAME})
aux_source_directory(./ SRC)
# 使用单独的api设置
target_sources(${LIB_NAME} PRIVATE ${SRC})
复制代码

为指定的目标设置源文件

set(src)
include(a/CMakeLists.txt)
target_sources(${app} PRIVATE ${src})
复制代码

如果源代码比较分散,分布在不同的CMakeLists中,在add_libraryadd_executeable不设置源文件,通过自定义src变量进行收集再进行设置。

  • a/CMakeLists.txt
list(APPEND src others.cpp) # 追加源文件
复制代码


目录
相关文章
蓝牙HID协议笔记【转】
蓝牙HID协议笔记 转自:http://blog.sina.com.cn/s/blog_69b5d2a50101emll.html 1.概述     The Human Interface Device (HID)定义了蓝牙在人机接口设备中的协议、特征和使用规程。
4736 0
|
6月前
|
人工智能 缓存 并行计算
《VGSP-C (Virtual GPU Scheduling Platform on CPU):基于CPU的虚拟GPU调度平台》
VGSP-C(基于CPU的虚拟GPU调度平台)提出通过“软仿真+并行调度+多机协同”三大路径,在普通CPU上模拟GPU并行计算行为。适用于资源受限或低成本场景,支持单机推理、分布式训练与极简CPU集群部署,提供统一编程接口与弹性扩展能力,助力AI普惠与算力再平衡。
233 0
|
算法 数据挖掘 机器人
【路径规划】基于RRT算法和改进人工势场法的无人机任务规划方法研究(Python代码实现)
【路径规划】基于RRT算法和改进人工势场法的无人机任务规划方法研究(Python代码实现)
749 0
|
安全 编译器 容器
C++STL容器和智能指针
C++STL容器和智能指针
|
机器学习/深度学习 并行计算 PyTorch
安装PyTorch详细步骤
安装PyTorch时,选择CPU或GPU版本。有Nvidia显卡需装CUDA和cuDNN,可从NVIDIA官网下载CUDA 11.8和对应版本cuDNN。无Nvidia显卡则安装CPU版。安装PyTorch通过conda或pip,GPU版指定`cu118`或`rocm5.4.2`镜像源。验证安装成功使用`torch._version_`和`torch.cuda.is_available()`。
|
算法 机器人 API
Nvidia Isaac Sim代码编程 入门教程 2024(7)
Nvidia Isaac Sim 2024年的代码编程入门教程,涵盖了Isaac Sim环境的配置、核心API的使用以及如何利用Python API搭建基本仿真demo。
3140 0
|
数据采集 人工智能 运维
有趣、实用!专为小白设计的Python零基础入门到人工智能教程
2017年7月,国务院发布的《新一代人工智能发展规划》提出,要在中小学阶段设置人工智能相关课程,并逐步推广编程教育。 Python 是一种通用型编程语言,它具有良好的可扩展性和适应性,易于学习,被广泛应用于云计算、人工智能、科学运算、Web 开发、网络爬虫、系统运维、图形GU1、金融量化投资等众多领域。无论是客户端、云端,还是物联网终端,都能看到Python 的身影,可以说,Python的应用无处不在。 特别是在移动互联网和人工智能时代,Pvthon 越来越受到编程者的青睐,成为近年来热度增长最快的编程语言之一。在 TIOBE、RedMonk 等世界编程语言排行榜中,Python 语言名列前茅
|
网络架构 Windows
windows电脑开机自动启动FRP客户端CMD代码,增加延时15秒功能
经常使用FRP客户端的都知道,FRP客户端启动时需要电脑有网络,否则会自动退出。我们的电脑在启动时,受路由器网络的影响,很多时间并不能第一时间建立起网络来,所以很容易受到网络影响,让FRP客户端自动启动发生故障。而这里的解决办法就是增加一段代码,可以延时15秒再执行。
|
机器学习/深度学习 人工智能 搜索推荐
推荐3个文本转语音AI工具
三款文本转语音工具各具特色,适用于不同的场景和需求。ELEVENLABS语音合成凭借其高质量的语音输出和先进的技术支持,适合对音质有较高要求的用户;TTSMAKER语音合成简单易用,功能丰富,适合普通用户日常使用;SPEECHIFY文本转语音则注重实用性和便捷性,特别适用于长时间阅读或学习场景。无论你是职场人士、学生还是语言学习者,都能在这些工具中找到适合自己的选择。【6月更文挑战第4天】
917 0