前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >CMake 添加外部源文件

CMake 添加外部源文件

原创
作者头像
用户11238969
发布2024-08-10 10:39:00
850
发布2024-08-10 10:39:00

CMake 添加外部源文件

代码语言:tree
复制
项目文件树
CPP11ThreadLearn
 ├── CMakeLists.txt------------顶级CMake文件
 ├── CPP11ThreadLearn----------项目文件夹1
 │   ├── CMakeLists.txt
 │   ├── CPP11ThreadLearn.cpp
 │   ├── CPP11ThreadLearn.h
 │   ├── simple.cpp
 │   └── simple.h
 ├── CPP11ThreadPool-----------项目文件夹2
 │   ├── CMakeLists.txt
 │   ├── main.cpp
 │   ├── test.cpp
 │   └── test.h
 └── Tools---------------------工具文件夹
     ├── tools.cpp
     └── tools.h

需求:我想要在项目1,2中都使用 Tools 下的文件.h .cpp

  • 不编译成静态库或动态库
  • 项目中 #include"tools.h" 即可以使用,像是在同一目录下的效果
  • 较好的维护性 不要在每个 CMakeLists.txt 中添加大量代码

解决方案:

思路:通过 CMake 配置文件加入头文件和源文件

第一步:定义函数

代码语言:cmake
复制
# 顶级CMake文件中添加函数
# 添加外部源码库(单层文件结构)
function(add_path_to_target target path)  	# 函数名   编译目标   添加路径
    aux_source_directory(${path} var)
    target_include_directories(${target} PUBLIC ${path})  
    target_sources(${target} PRIVATE ${var}) 
endfunction() 

第二步:使用函数

代码语言:cmake
复制
# 在项目 1 or 2 下的 CMakeLists.txt 中使用该函数
# CPP11ThreadPool/CMakeLists.txt  内容
cmake_minimum_required (VERSION 3.8)

# 将源代码添加到此项目的可执行文件。
add_executable (CPP11ThreadPool "main.cpp" "test.h" "test.cpp")

# 参数1 项目目标名  参数2 相对路径
add_path_to_target(CPP11ThreadPool ../Tools)

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • CMake 添加外部源文件
    • 解决方案:
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档