项目代码架构

简介: 在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即可

 

相关文章
|
1月前
|
设计模式 前端开发 测试技术
Flutter 项目架构技术指南
探讨Flutter项目代码组织架构的关键方面和建议。了解设计原则SOLID、Clean Architecture,以及架构模式MVC、MVP、MVVM,如何有机结合使用,打造优秀的应用架构。
Flutter 项目架构技术指南
|
4月前
|
存储 测试技术 数据库
谈谈代码:降低复杂度,从放弃三层架构到DDD入门
最近我发现团队某项目的复杂度越来越高(典型的三层架构),具体表现为: - 代码可读性较差:各个服务之间调用复杂,流程不清晰 - 修改某服务业务代码导致大量无关服务的测试用例失败,单个功能开发者很难迅速定位相关问题 - 测试用例特别难编写,需要mock大量数据来拉起整块服务
102 4
谈谈代码:降低复杂度,从放弃三层架构到DDD入门
|
4月前
|
设计模式 前端开发 Java
KnowStreaming系列教程第二篇——项目整体架构分析
KnowStreaming系列教程第二篇——项目整体架构分析
42 0
|
4月前
|
前端开发 JavaScript Java
电商4.0项目【二】: 架构搭建
电商4.0项目【二】: 架构搭建
43 0
|
1月前
|
SpringCloudAlibaba Java 持续交付
【构建一套Spring Cloud项目的大概步骤】&【Springcloud Alibaba微服务分布式架构学习资料】
【构建一套Spring Cloud项目的大概步骤】&【Springcloud Alibaba微服务分布式架构学习资料】
145 0
|
2月前
|
机器学习/深度学习 测试技术 Ruby
YOLOv5改进 | 主干篇 | 反向残差块网络EMO一种轻量级的CNN架构(附完整代码 + 修改教程)
YOLOv5改进 | 主干篇 | 反向残差块网络EMO一种轻量级的CNN架构(附完整代码 + 修改教程)
128 2
|
4月前
|
前端开发 JavaScript 数据库
Flask狼书笔记 | 09_图片社交网站 - 大型项目的架构与需求(2)
9.8 收藏图片 前面已经学习过如何使用关联表来表示多对多关系,缺点是只能表示关系,不能存储数据(如我还想记录下收藏图片的时间戳)。这种情况下,我们可以使用关联模型来表示多对多关系。 在关联模型中,我们将Photo模型与User模型的多对多关系,分离成了User模型和Collect模型的一对多关系,和Photo模型与Collect模型的一对多关系。
66 0
|
30天前
|
程序员 Python
类的设计奥秘:从代码到架构的科普全解
类的设计奥秘:从代码到架构的科普全解
13 2
|
1月前
|
消息中间件 并行计算 网络协议
探秘高效Linux C/C++项目架构:让进程、线程和通信方式助力你的代码飞跃
探秘高效Linux C/C++项目架构:让进程、线程和通信方式助力你的代码飞跃
34 0
|
2月前
|
设计模式 微服务
从代码到架构,我的技术成长之路
【2月更文挑战第5天】技术是一门不断进步的艺术,我在不断的实践中,通过学习和思考,逐渐领悟到了代码、架构等方面的知识和技能。在这个过程中,我发现技术并不仅仅是一种工具,更是一种思维方式和生活态度。本文将分享我的技术成长历程和所获得的思考。
27 2