项目代码架构

简介: 在project目录下的树结构如下: 1 root@u18:~/cp/project# tree 2 . 3 ├── 3rd_lib      //存放 第三方库 的目录 4 │   ├── libvirt-lxc.

在project目录下的树结构如下:

 1 root@u18:~/cp/project# tree
 2 .
 3 ├── 3rd_lib      //存放 第三方库 的目录
 4 │   ├── libvirt-lxc.so
 5 │   ├── libvirt-qemu.so
 6 │   └── libvirt.so
 7 ├── build       //执行Cmake ..的目录
 8 ├── CMakeLists.txt
 9 ├── include     //头文件目录
10 │   └── libvirt
11 │       ├── libvirt-domain.h
12 │       ├── libvirt-domain-snapshot.h
13 │       ├── libvirt-event.h
14 │       ├── libvirt.h
15 │       ├── libvirt-host.h
16 │       ├── libvirt-interface.h
17 │       ├── libvirt-lxc.h
18 │       ├── libvirt-network.h
19 │       ├── libvirt-nodedev.h
20 │       ├── libvirt-nwfilter.h
21 │       ├── libvirt-qemu.h
22 │       ├── libvirt-secret.h
23 │       ├── libvirt-storage.h
24 │       ├── libvirt-stream.h
25 │       └── virterror.h
26 └── src      //代码目录
27     ├── LibvirtConfig.h
28     ├── LibvirtConfig.h.in
29     ├── libvirt.cpp
30     └── Libvirt.h.in
31 
32 5 directories, 23 files

  CMakeList文件内容如下:

 1 cmake_minimum_required (VERSION 2.6)
 2 
 3 #PROJECT(projectname [CXX] [C] [Java])  编译语言
 4 project (Libvirt CXX)
 5 
 6 #The version number
 7 set (Libvirt_VERSION_MAJOR 1)
 8 set (Libvirt_VERSION_MINOR 0)
 9 
10 #configure a header file to pass some of  the source code
11 configure_file (
12     "${PROJECT_SOURCE_DIR}/src/LibvirtConfig.h.in"
13     "${PROJECT_BINARY_DIR}/src/LibvirtConfig.h"
14     )
15 
16 # equal to echo in shell
17 MESSAGE(STATUS "This is source dir: " ${PROJECT_SOURCE_DIR})
18 MESSAGE(STATUS "This is binary dir: " ${PROJECT_BINARY_DIR})
19 
20 #add sub dir  and find CMakeList.txt in the sub dir, done it
21 #ADD_SUBDIRECTORY(subdir)
22 
23 #将一个文件下的编译用的源文件添加到一个宏列表中
24 #AUX_SOURCE_DIRECTORY(. SRC_LIST)
25 #只将.cc .cpp .c 的文件添加到SRC_LIST中,.h除外
26 
27 
28 #将.h文件也添加进来,使用
29 INCLUDE_DIRECTORIES("${PROJECT_BINARY_DIR}/src")
30 FILE(GLOB_RECURSE SOURCE_FILE ./src/*.cpp  ./src/*.c)
31 FILE(GLOB_RECURSE HEADER_FILE *.h  *.hpp)
32 
33 MESSAGE(STATUS "This is source dir: " ${SOURCE_FILE})
34 #MESSAGE(STATUS "This is header dir: " ${HEADER_FILE})
35 #add the binary tree to the search path for include files so that we will find LibvirtConfig.h
36 #include_directories ("${PROJECT_BINARY_DIR}/src", "${PROJECT_BINARY_DIR}/INCLUDE/libvirt")
37 
38 #add the 3rd_lib
39 #link_directories("${PROJECT_BINARY_DIR}/3rd_Lib")  
40 FILE(GLOB_RECURSE LIB_FILE libvirt.so*)
41 
42 MESSAGE(STATUS "This is 3rd_lib file : " ${LIB_FILE})
43 
44 #add the executable
45 add_executable(Libvirt ${SOURCE_FILE})
46 
47 #link 
48 TARGET_LINK_LIBRARIES(Libvirt ${LIB_FILE})

操作步骤:

  1、进入build目录,执行cmake .. (因为CMakelist文件在上一级目录中),生成Makefile文件

  2、执行make即可

 

相关文章
|
18天前
|
数据采集 机器学习/深度学习 大数据
行为检测代码(一):超详细介绍C3D架构训练+测试步骤
这篇文章详细介绍了C3D架构在行为检测领域的应用,包括训练和测试步骤,使用UCF101数据集进行演示。
28 1
行为检测代码(一):超详细介绍C3D架构训练+测试步骤
|
24天前
|
前端开发 JavaScript 测试技术
android做中大型项目完美的架构模式是什么?是MVVM吗?如果不是,是什么?
android做中大型项目完美的架构模式是什么?是MVVM吗?如果不是,是什么?
71 2
|
3天前
|
存储 安全 Java
系统安全架构的深度解析与实践:Java代码实现
【11月更文挑战第1天】系统安全架构是保护信息系统免受各种威胁和攻击的关键。作为系统架构师,设计一套完善的系统安全架构不仅需要对各种安全威胁有深入理解,还需要熟练掌握各种安全技术和工具。
27 10
|
18天前
|
机器学习/深度学习 网络架构 计算机视觉
目标检测笔记(一):不同模型的网络架构介绍和代码
这篇文章介绍了ShuffleNetV2网络架构及其代码实现,包括模型结构、代码细节和不同版本的模型。ShuffleNetV2是一个高效的卷积神经网络,适用于深度学习中的目标检测任务。
55 1
目标检测笔记(一):不同模型的网络架构介绍和代码
|
5天前
|
前端开发 JavaScript 测试技术
Android适合构建中大型项目的架构模式全面对比
本系列教程详细讲解 Kotlin 语法,适合需要深入了解 Kotlin 的开发者。快速学习 Kotlin 语法的小伙伴可以查看“简洁”系列教程。此外,教程还对比了多种适合中大型项目的架构模式,如 MVVM、MVP、MVI、Clean Architecture 和 Flux/Redux,帮助开发者根据项目需求选择合适的架构。
15 3
|
6天前
|
前端开发 JavaScript 测试技术
Android适合构建中大型项目的架构模式全面对比
Android适合构建中大型项目的架构模式全面对比
17 2
|
22天前
|
存储 分布式计算 Hadoop
Hadoop-33 HBase 初识简介 项目简介 整体架构 HMaster HRegionServer Region
Hadoop-33 HBase 初识简介 项目简介 整体架构 HMaster HRegionServer Region
38 2
|
2月前
|
负载均衡 数据库 开发工具
|
1月前
|
设计模式 人工智能 算法
编程之旅:从代码到架构的感悟
【9月更文挑战第33天】在编程的世界里,代码不仅是实现功能的工具,更是连接思想与现实的桥梁。本文将通过个人的编程经历,分享从编写第一行代码到设计系统架构的旅程,探索编程背后的哲学和技术演变。我们将一起思考,如何在代码的海洋中找到自己的航向,以及在这个过程中如何不断成长和适应变化。
|
7天前
|
缓存 前端开发 JavaScript
前端架构思考:代码复用带来的隐形耦合,可能让大模型造轮子是更好的选择-从 CDN 依赖包被删导致个站打不开到数年前因11 行代码导致上千项目崩溃谈谈npm黑洞 - 统计下你的项目有多少个依赖吧!
最近,我的个人网站因免费CDN上的Vue.js包路径变更导致无法访问,引发了我对前端依赖管理的深刻反思。文章探讨了NPM依赖陷阱、开源库所有权与维护压力、NPM生态问题,并提出减少不必要的依赖、重视模块设计等建议,以提升前端项目的稳定性和可控性。通过“left_pad”事件及个人经历,强调了依赖管理的重要性和让大模型代替人造轮子的潜在收益

热门文章

最新文章