项目代码架构

在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即可

 

时间: 2024-10-30 23:35:23

项目代码架构的相关文章

工业级物联网项目的架构设计及实施

早在1999年就已经有了"物联网"这个概念,但是直到十年之后的2009年,IBM提出"智慧地球"的概念,才推动很多国家把物联网研究和发展提升到战略层面.但是比较遗憾的是,直到现在的2015年,我国的物联网的发展依然主要靠政府项目来拉动,所以现在的发展似乎前景越来越不明朗. 政府似乎意识到这是个问题,在一些互联网公司的倡导和推动下,提出了"互联网+"的概念.虽然"互联网+"和"物联网"都是以网为主,但是发展的

循序渐进开发WinForm项目(2) 项目代码的分析

在很多时候,很多入门不久的朋友都会问我:我是从其他语言转到C#开发的,有没有一些基础性的资 料给我们学习学习呢,你的框架感觉一下太大了,希望有个循序渐进的教程或者视频来学习就好了. 其实也许我们每天面对的太多东西了,觉得很多都稀松平常了,即使很细微的地方,可能我们都已经 形成习惯了.反过来,如果我们切换到其他领域,如IOS.android,那么开始我们可能对里面很多设计 的规则不甚了解,开始可能也是一头雾水. 本篇继续上一篇<循序渐进开发WinForm项目(1) --数据库设计和项目框架的生成>

简单且实用-求些小项目代码简单的就行

问题描述 求些小项目代码简单的就行 java小项目代码,谁有些,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 解决方案 自己百度搜一个呗,或者看下CSDN首页的热门下载中的资源.简单的学习项目在这个资源异常丰富的互联网时代,只要你费点心,还是大量存在的. 解决方案二: web?还是android的?多小?你的需求很模糊. 解决方案三: 我空间上传过一些小程序代码

myeclipse2015 保存项目代码时经常提示user operation is waiting

问题描述 myeclipse2015 保存项目代码时经常提示user operation is waiting 已经按照网上说法进行优化, 是因为项目比较大导致的吗?还是myeclipse2015的问题? (关闭build automatically可以改善,还有其他的办法吗?) 谢谢了~ 解决方案 参考[转][转]彻底解决 Eclipse出现the user operation is waiting的问题 网上一般的解决办法是 :project->Build Automaticlly前面的钩钩

Google Code项目代码托管网站上Git版本控制系统使用简明教程

作为一个著名的在线项目代码托管网站,Google Code目前主要支持三种版本控制系统,分别为Git, Mercurial和 Subversion.Subversion即SVN相信大家都已经熟知了,这里我们要介绍的是最近新增的Git版本控制系统. 如果您在Google Code上的项目已经使用SVN进行版本管理,也可以很方便的在本地使用Git对项目进行版本管理.详细操作步骤请参考: Convert your project from Subversion to Git 下面我们要讲的主要就是如果

初学者的忧伤-svn用分支管理项目代码覆盖

问题描述 svn用分支管理项目代码覆盖 我们用svn分支管理项目时,每个人都分出一个分支做自己的功能,但是在最后合并时候经常会出现两个人都修改某个文件,后面修改的人会将前面人写的内容覆盖掉,请问这种情况一般如何处理. 解决方案 SVN 分支管理项目 解决方案二: 分两种情况: 一:两个人修改同一份文件,但修改的地方不同 可以先把对方的修改操作更新(不是覆盖更新)下来,然后自己再提交 二:两个人修改同一份文件,但修改的地方相同 这个时候就得把对方叫到一起了,你们之间协商用哪一个

嵌入式 十个最值得阅读学习的C开源项目代码

开源世界有许多优秀的开源项目,我选取其中十个最优秀的.最轻量级的C语言的项目,希望可以为C语言开发人员提供参考. 十个最值得阅读学习的C开源项目代码 1. Webbench 2. Tinyhttpd 3. cJSON 4. CMockery 5. Libev 6. Memcached 7. Lua 8. SQLite 9. UNIX v6 10. NETBSD 十个最值得阅读学习的C开源项目代码 1. Webbench Webbench是一个在linux下使用的非常简单的网站压测工具.它使用fo

在哪里可以找到java web的项目代码并可以运行来学习?

问题描述 在哪里可以找到java web的项目代码并可以运行来学习? 在哪里可以找到java web(ssi,ssh,ssm等)的项目代码并可以运行拿来学习? 解决方案 http://www.mamicode.com/info-detail-891477.html

php代码架构的八点注意事项_php技巧

本文总结讲述了php代码架构的八点注意事项.分享给大家供大家参考,具体如下: 写代码写了6年多了,看看以前的架构,看看现在的架构.都有一些不足的地方.不管怎么样,都一直在改进.说实话不太喜欢用框架这类东西,基本上所有的框架都大同小异,差不了多少,要用话的,你还要去了解思想,目录结构,文件调用,文件命名,代码规范等,挺浪费时间的.构架能满足很大一部分的要求,满足的人越多性能越差,这也是我不喜欢用架构的一个主要原因.下面说一下,代码架构方面的一些心德. 一.面向对象为主,面向过程为辅 php4是面向