CMake 构建项目教程-简介

  Linux 平台构建项目,选择了CLion作为C++的IDE,而CLion默认就是使用CMake构建项目,所以这里记录了CMake在构建项目过程的一些小知识。

1. 项目的目录结构如下所示,包括静态库和动态库项目,同时也包括一个测试项目。

.
├── bin
│   └── test1
├── CMakeLists.txt
├── include
│   └── apple.h
├── lib
│   ├── liblearn.a
│   ├── liblearn.so -> liblearn.so.
│   ├── liblearn.so. -> liblearn.so.1.0
│   └── liblearn.so.1.0
├── src
│   ├── apple.cpp
│   └── CMakeLists.txt
└── test
├── CMakeLists.txt
└── main.cpp directories, files

  bin 可执行文件的生成目录,lib 链接库文件的生成目录,include 头文件所在目录,src 源代码文件所在目录,test 测试程序源代码所在目录。

2. . 根目录 CMakeList.txt

cmake_minimum_required(VERSION 3.5)

project( cmake_learn )

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")

add_subdirectory( src )
add_subdirectory( test )

3. src 目录 CMakeList.txt

# 搜集所有在指定路径下的源文件的文件名,将输出结果列表储存在指定的变量中。
aux_source_directory(. SOURCE_FILES ) # 或者使用下面这种方式。
#set( SOURCE_FILES
# apple.cpp
# orage.cpp ) # 添加包含目录,CMake将在这些目录寻找 .cpp 文件中引用到的头文件。
include_directories( ${PROJECT_SOURCE_DIR}/include ) # 指定编译后的库文件的输出路径。
set( LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/lib ) # 生成目标动态库。
add_library( learn SHARED ${SOURCE_FILES} ) # 生成目标静态库。
add_library( learn_static STATIC ${SOURCE_FILES} ) # 指定静态库的输出名称。
set_target_properties( learn_static PROPERTIES OUTPUT_NAME "learn" ) # 允许静态库与动态库同时存在。
set_target_properties( learn PROPERTIES CLEAN_DIRECT_OUTPUT )
set_target_properties( learn_static PROPERTIES CLEAN_DIRECT_OUTPUT ) # 指定动态库的版本:
# VERSION 动态库版本;
# SOVERSION API的版本。
set_target_properties( learn PROPERTIES VERSION 1.0 SOVERSION )

4. test 目录 CMakeList.txt


# 搜集所有在指定路径下的源文件的文件名,将输出结果列表储存在指定的变量中。
aux_source_directory(. SOURCE_FILES )
# 添加包含目录,CMake将在这些目录寻找 .cpp 文件中引用到的头文件。
include_directories( ${PROJECT_SOURCE_DIR}/include ) # 指定编译后的可执行程序的输出路径。
set( EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin ) # 指定生成可执行程序。
add_executable( test1 ${SOURCE_FILES} ) # 添加链接库目录,CMake将在如下如目录中查找所链接的外部库。
link_directories( ${PROJECT_SOURCE_DIR}/lib ) # 指定链接库。
target_link_libraries( test1
learn )

6. 总结

  目录树种使用的 h cpp 文件都是测试代码,并不重要,关键是分析清楚 CMake 是怎样嵌套的互相关联的,编译后生产的静态库与动态库都按预期出现在了 lib 目录中,测试的可执行文件也 生成在了 bin 目录中。

CMake 构建项目教程-简介的更多相关文章

  1. 在Qt Creator中创建C++工程并使用CMake构建项目

    创建完毕后,若电脑上没有安装CMake,则无法构建工程, 我用的是绿色版,官网下载地址:https://cmake.org/files/v3.10/cmake-3.10.1-win64-x64.zip ...

  2. 用CMake 构建Qt 项目

    译:用CMake构建Qt项目作者: Johan Thelin  译者:赖敬文原链接:http://developer.qt.nokia.com/quarterly/view/using_cmake_t ...

  3. CMake快速入门教程-实战

    http://www.ibm.com/developerworks/cn/linux/l-cn-cmake/ http://blog.csdn.net/dbzhang800/article/detai ...

  4. 转:CMake快速入门教程-实战

    CMake快速入门教程:实战 收藏人:londonKu     2012-05-07 | 阅:10128  转:34    |   来源   |  分享               0. 前言一个多月 ...

  5. 在 linux 下使用 CMake 构建应用程序

    学习cmake http://xwz.me/wiki/doku.php?id=cmake 碰到的一些问题: 1.You have changed variables that require your ...

  6. 【经验分享】win10 cmake 构建 Tengine 工程

      欢迎关注我的公众号 [极智视界],回复001获取Google编程规范   O_o   >_<   o_O   O_o   ~_~   o_O   本教程详细记录了在 win10 环境中 ...

  7. [ionic开源项目教程] - 第12讲 医疗模块的实现以及Service层loadMore和doRefresh的提取封装

    关注微信订阅号:TongeBlog,可查看[ionic开源项目]全套教程. 这一讲主要实现tab2[医疗]模块,[医疗]模块跟tab1[健康]模块类似. [ionic开源项目教程] - 第12讲 医疗 ...

  8. Windows Phone 8初学者开发—第10部分:数据绑定应用程序和透视应用程序项目模板简介

    原文 Windows Phone 8初学者开发—第10部分:数据绑定应用程序和透视应用程序项目模板简介 原文地址: http://channel9.msdn.com/Series/Windows-Ph ...

  9. VisualGDB:使用VS创建CMake Linux项目

    转载地址:点击打开链接 根据VisualGDB官网(https://visualgdb.com)的帮助文档大致翻译而成.主要是作为个人学习记录.有错误的地方,Robin欢迎大家指正. 本文介绍如何使用 ...

随机推荐

  1. elasticsearch best_fields most_fields cross_fields从内在实现看区别——本质就是前两者是以field为中心,后者是词条为中心

    1.最佳字段(Best fields):: 假设我们有一个让用户搜索博客文章的网站(允许多字段搜索,最佳字段查询),就像这两份文档一样: PUT /my_index/my_type/1 { " ...

  2. Docker 介绍及安装

    Docker介绍 Docker采用 C/S架构 Docker daemon 作为服务端接受来自客户的请求,并处理这些请求(创建.运行.分发容器). Docker基于go语言并遵从Apache2.0协议 ...

  3. 2018-2019-1 20189206 《Linux内核原理与分析》第八周作业

    #linux内核分析学习笔记 --第七章 可执行程序工作原理 学习目标:了解一个可执行程序是如何作为一个进程工作的. ELF文件 目标文件:是指由汇编产生的(*.o)文件和可执行文件. 即 可执行或可 ...

  4. Pandas之分组

    假如我们现在有这样一组数据:星巴克在全球的咖啡店信息,如下图所示.数据来源:starbucks_store_locations.我们想要统计中国每个城市的星巴克商店的数量,那我们应该怎么做呢? 在pa ...

  5. WordPress上传到互联网搭建

    1.建站流程: 1.购买域名 2.购买空间 3.解析绑定 4.上传安装 2.购买域名 域名的购买可以到相关域名出售的服务商那儿买,如阿里云,主机庙.这里就不做详细解释了 3.购买空间 域名的购买可以到 ...

  6. 基于Bootsrap的BeyondAdmin前端模板 --分享

    1.PC端 2.移动端 3.下载 最新:http://www.yidt.cn/ 链接:https://pan.baidu.com/s/1Tx6EVmGFnVV7H7h3SFwldA 提取码:0btw

  7. QGis+QT5.9+VS2017源码编译

    1.需要软件 VS2017 QT5.9.2 CMake 3.10.2 Cygwin osgeo4w QGIS源码 2.安装VS2017  过程省略 是由于机器上已经安装了VS2017 3.安装QT5. ...

  8. windows 和linux 文件互传

    1.sz +  文件   [拷贝到windows上] 2.rz + 文件 [拷贝到linux上]

  9. Vue通过id跳转到商品详情页

    首页列表: 在这里我用a标签进行跳转,在vue里面使用<router-link></router-link> <router-link :to="{path:' ...

  10. ThinkPHP5.0源码学习之框架启动流程

    ThinkPHP5框架的启动流程图如下: ThinkPHP5的启动流程按照文件分为三步: 1.请求入口(public/index.php) 2.框架启动(thinkphp/start.php) 3.应 ...