cmake处理源代码分布在不同目录中的情况也很简单,现在假设我们的源代码分布情况如下:

源代码的分布情况


其中src目录下的文件要编译成一个链接库

第一步,项目主目录中的CMakelist.txt

在目录step2中创建文件CMakelist.txt文件内容如下:

目录 step2 中的 CMakeLists.txt
1 PROJECT(main)
2 CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
3 ADD_SUBDIRECTORY( src )
4 AUX_SOURCE_DIRECTORY(. DIR_SRCS)
5 ADD_EXECUTABLE(main ${DIR_SRCS}  )
6 TARGET_LINK_LIBRARIES( main Test )

相对于上一篇中单个文件的Cmakelist.txt,这个多个源文件的Cmakelist.txt添加了一下的内容:

第三行,使用命令ADD_SUBDIRECTORY指明本项目包含一个子目录src。

第六行,使用命令 TARGET_LINK_LIBRARIES指明可执行文件main需要连接一个名为Test的链接库

第二步,子目录中的CmakeLists.txt

在子目录中src中创建CmakeLists.txt文件内容如下:

1 AUX_SOURCE_DIRECTORY(. DIR_TEST1_SRCS)
2 ADD_LIBRARY ( Test ${DIR_TEST1_SRCS})

在该文件中使用ADD_LIBRARY将src目录中的源文件编译为共享库

第三步,执行cmake

至此我们完成了项目所有CMAkelists.txt文件的编写,进入目录step2中依次执行命令 “cmake  .”he "make"得到如下结果:

处理多源文件目录时 cmake 的执行结果

在执行cmake的过程中,首先解析目录step2中的CMakeList.txt,当程序执行命令ADD_SUBDIRECTORY(src)时,进入目录src对其中的CMakeLists.txt进行解析

参考文献:http://www.ibm.com/developerworks/cn/linux/l-cn-cmake/

cmake处理多源文件目录的方法的更多相关文章

  1. cmake处理多源文件目录的方法(转)

    cmake处理源代码分布在不同目录中的情况也很简单,现在假设我们的源代码分布情况如下: 源代码的分布情况 其中src目录下的文件要编译成一个链接库 第一步,项目主目录中的CMakelist.txt 在 ...

  2. cmake处理多源文件目录

    cmake处理多源文件目录 假设我们的源文件全部在src中,则我们需要在子文件src中建立文件CmakeLists.txt,内容如下: AUX_SOURCE_DIRECTORY(. DIR_TEST_ ...

  3. Linux c++ vim环境搭建系列(6)——CMakeLists.txt多文档多目录组织方法和编写示例

    CMakeLists.txt学习 1. 概要 主要是关于cmakelists.txt的编写模板,和多文档多目录的组织方法详解, 涉及第三方库的添加使用方法. 这里主要介绍cmakelists.txt的 ...

  4. Dedecms去掉URL中a目录的方法

    本文实例讲述了Dedecms去掉URL中a目录的方法.分享给大家,供大家参考.具体分析如下: 使用dedecms的朋友可能会发现自己的URL目录生成是会自动带有一个/A/目录了,那么要如何去掉URL中 ...

  5. linux下关于Apache设置二级域名绑定二级目录的方法

    背景:对于一些论坛网站,某些目录需要制定二级域名去访问,这时候就要在apache中用二级域名绑定二级目录. 方法: 1.首先你要找到apache安装路径,在apahce安装路径下的conf文件夹中找到 ...

  6. ASP.NET网站中获取当前虚拟目录的应用程序目录的方法(转)

    [原创]ASP.NET网站中获取当前虚拟目录的应用程序目录的方法 ASP.NET网站中获取当前虚拟目录的应用程序目录的方法1.问题描述:有时候,某个网页控件会被不同目录下文件使用,此时如果该控件中有一 ...

  7. 在Linux下和Windows下遍历目录的方法及如何达成一致性操作

    最近因为测试目的需要遍历一个目录下面的所有文件进行操作,主要是读每个文件的内容,只要知道文件名就OK了.在Java中直接用File类就可以搞定,因为Java中使用了组合模式,使得客户端对单个文件和文件 ...

  8. C#的path.GetFullPath 获取上级目录实现方法

    这篇文章主要介绍了C#的path.GetFullPath 获取上级目录实现方法,包含了具体的C#实现方法以及ASP.net与ASP等的方法对比,非常具有实用价值,需要的朋友可以参考下   本文实例讲述 ...

  9. PHP计算一个目录文件大小方法

    <?php $dirfile='../hnb'; /** *计算一个目录文件大小方法 *$dirfile:传入文件目录名 **/ function dirSize($dirfile) { $di ...

随机推荐

  1. 9:django 表单

    django自带表单系统,这个表单系统不仅可以定义属性名,还可以自己定义验证,更有自己自带的错误提示系统 这节我们仅仅粗略的来看一下django表单系统的入门运用(具体的实在太多东西,主要是我觉得有很 ...

  2. Python+Selenium 自动化实现实例-获取页面元素信息(百度首页)

    #coding=utf-8from selenium import webdriverdriver = webdriver.Chrome()driver.get("http://www.ba ...

  3. Matlab处理数据导出Paraview可读的vtk文件(二)

    由于我在用SPH方法仿真时用的是FORTRAN语言,并且没有找到直接输出vtk文件的代码,因此偷懒通过MATLAB转换一下数据. 用到的Matlab子程序可通过一下链接找到. Matlab处理数据导出 ...

  4. 利用Node 搭配uglify-js压缩js文件,批量下载图片到本地

    Node的便民技巧-- 压缩代码 下载图片 压缩代码 相信很多前端的同学都会在上线前压缩JS代码,现在的Gulp Webpack Grunt......都能轻松实现.但问题来了,这些都不会,难道就要面 ...

  5. rpm包管理和源码包管理

    (1)软件类型 源码包 需要gcc编译 nginx-1.12.1.tar.gz 二进制包 已编译 mysql-community-common-5.7.12-1.el7.x86_64.rpm 常见的二 ...

  6. Ionic-wechat项目边开发边学(一):环境搭建和创建一个项目

    之前学AngularJS,教程过了一遍觉得很简单,但真正写几个Demo就错误百出,一个小小的功能要折腾很久.所以这次学Ionic,准备以开发一个项目为切入点去学,那么问题来了,开发什么项目呢? 纠结了 ...

  7. jquery 获取鼠标坐标

    $("#x").text(event.pageX), $("#y").text(event.pageY);

  8. C#读取csv文件使用字符串拼接成XML

    phone.csv zhangsan1, zhangsan2, zhangsan3, static void Main(string[] args) { //XML //XML就是一个文件,用来存储数 ...

  9. Mac OS X 更新JAMF域控配置

    在终端执行以下命令即可更新jamf域控配置属性 sudo jamf mcx # 应用被管理的配置信息 sudo jamf policy -trigger # 检查触发器策略 sudo jamf rec ...

  10. Java介绍

    Java简介 Java是由Sun Microsystems公司于1995年5月推出的Java面向对象程序设计语言和Java平台的总称.由James Gosling和同事们共同研发,并在1995年正式推 ...