网站首页

人工智能P2P分享搜索全网发布信息网站地图标签大全

当前位置:诺佳网 > 电子/半导体 > 嵌入式技术 >

Linux中CMake的使用4-代码与编译文件单独存放

时间:2022-09-22 08:57

人气:

作者:admin

标签: 编译  Linux  CMake 

导读:本篇介绍当源文件与编译文件独立存放时,如何编写CMakeLists.txt。...

本篇介绍当源文件编译文件独立存放时,如何编写CMakeLists.txt。

1只使用一个CMakeLists.txt

1.1 目录结构

文件目录结构如下,sum.c、sum.h、sub.c、sub.h和main.c的代码内容见前面的文章。

其中sum.h和sub.h放到include这个文件夹中,main.c、sum.c和sub.c放到src这个文件夹中。

在整个工程中,只有一个CMakeLists.txt:

pYYBAGMrImeAOwP9AAC05JSEiH0714.png

1.2 CMakeLists.txt

cmake_minimum_required (VERSION 2.8)

project (sum_sub_test)

include_directories (include)

aux_source_directory (src SRC_LIST)

add_executable (sum_sub_test ${SRC_LIST})

set (EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin)

最后一句是一个新的知识点:

EXECUTABLE_OUTPUT_PATH:CMake自带的预定义变量,表示可执行文件的存放位置

PROJECT_SOURCE_DIR:CMake自带的预定义变量,表示工程的根目录

set指令:用于定义变量,即指定可执行文件存放在工程根目录下的bin目录中

1.3 运行测试

poYBAGMrIm-ABCWUAAJ-1ZPUIV8858.png

2 顶层+子层CMakeLists.txt

一个工程,可以不只有一个CMakeLists.txt,通过层级间的管理,可以实现顶层对底层的调用。

2.1 目录结构

文件目录结构如下,sum.c、sum.h、sub.c、sub.h和main.c的代码内容见前面的文章。

其中sum.h和sub.h放到include这个文件夹中,main.c、sum.c和sub.c放到src这个文件夹中。

在整个工程中,外出有一个CMakeLists.txt,子层src目录中也有一个CMakeLists.txt:

poYBAGMrInaAAceHAADFaC6CL1A628.png

2.2 CMakeLists.txt

2.2.1 顶层CMakeLists.txt

cmake_minimum_required (VERSION 2.8)

project (sum_sub_test)

add_subdirectory (src)

最后一句是一个新的知识点:

add_subdirectory():向当前工程添加存放源文件的子目录

这里指定的是在src目录下存放了源文件

当执行cmake指令时,就会进入src目录下去找下一级的CMakeLists.txt

所以在src目录下也必须要有一个子层的CMakeLists.txt

2.2.2 子层CMakeLists.txt

include_directories (../include)

aux_source_directory (. SRC_LIST)

add_executable(sum_sub_test ${SRC_LIST})

set (EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin)

最后的set语句刚才已经见过了,就是指定可执行文件的输出位置。

2.3 运行测试

poYBAGMrIn6AB5-jAAJogwHTdaE221.png

3 总结

本篇介绍了源文件与编译文件独立存放时,如何编写CMakeLists.txt。

pYYBAGMrIoSAZHmrAAEi5S1FkQM322.png
cmake_minimum_required (VERSION 2.8)

project (sum_sub_test)

include_directories (include)

aux_source_directory (src SRC_LIST)

add_executable (sum_sub_test ${SRC_LIST})

set (EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin)

新引入的知识点是最后这句,通过set来指定可执行文件的输出位置:

set (EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin)

以及使用顶层+子层的CMakeLists.txt时,通过add_subdirectory来指定子层源文件的目录:

add_subdirectory (src)

并在相应的子层目录中再编写CMakeLists.txt。

审核编辑:汤梓红
温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信