首页 > 其他分享 >CMake初识(一)

CMake初识(一)

时间:2022-10-28 21:34:21浏览次数:83  
标签:cmake 源文件 add 初识 所示 CMake DIR

一、工作流程

  CMake允许开发者编写一种与平台无关的CMakeList.txt文件来制定编译流程,之后根据所在的平台进一步生成本地化Makefile和工程文件(e.g., Unix下的Makefile)

  Linux平台下使用CMake生成Makefile并编译的流程如下:

    1)编写CMake配置文件-CMakeList.txt;

    2)执行命令 cmake PATH 或 ccmake PATH 生成Makefile,两者的区别在于 ccmake 提供交互式界面;

    3)执行命令 make 进行编译。

  以下内容参考超详细的CMake教程 - 一杯清酒邀明月 - 博客园 

二、Example_1(单个源文件)

  1)编写主函数——实现幂指数的计算;

  2)编写CMakeLists.txt文件,并与main.cc位于同一目录

    CMake语法较为简单,由命令、注释和空格组成

      命令:不区分大小写,由命令名称、小括号和参数组成,参数之间利用空格间隔。本例所用如下所示:

         cmake_minimum_required :配置文件所需CMake的最低版本;

         project  :标识项目名称;

        add_executable :将源文件编译为可执行文件。

      注释:#之后即为注释;

    代码如下所示:

 1 # CMake 最低版本要求
 2 
 3 cmake_minimum_required (VERSION 3.0)
 4 
 5 # 项目信息
 6 
 7 project (Demo1)
 8 
 9 # 指定生成目标
10  
11 add_executable(Demo main.cc)

  3)执行 cmake . ,生成Makefile和项目文件,之后执行 make ,生成目标文件,最后执行 ./Demo 5 4 ,输出结果。

三、Example_2(同一目录,多个源文件)

  1)在Example_1的基础上,将power函数移至另一源文件中,此时的CMakeLists文件如下所示:

 1 # CMake 最低版本要求
 2 
 3 cmake_minimum_required (VERSION 3.0)
 4 
 5 # 项目信息
 6 
 7 project (Demo1)
 8 
 9 # 指定生成目标
10  
11 add_executable(Demo1 main.cc Function.cc)

  同样执行Example_1所示的命令,得到相同的结果,其中目标文件为Demo1

  但是这种手动添加较为繁琐,我们可以使用 aux_source_directory ,该命令会查看目录下所有源文件,之后将结果存入指定变量名,语法如下所示:

aux_source_directory (<dir> <variable>)

  修改之后的CMakeLists.txt文件如下所示:

 1 # CMake 最低版本要求
 2 
 3 cmake_minimum_required (VERSION 3.0)
 4 
 5 # 项目信息
 6  
 7 project (Demo1)
 8 
 9 # 查看所有源文件
10 
11 aux_source_directory(. DIR_SRC)
12 
13 # 指定生成目标
14 
15 add_executable(Demo1 ${DIR_SRC})

四、Example_3(多个目录多个源文件)

  1)将Example_2中的power函数的相关文件移到另一目录

  2)此时对于子函数所在的目录我们仍需要编写CMakeLists.txt文件,如下所示

1 # 查找当前目录源文件,将其保存在DIR_LIB_SRCS
2 
3 aux_source_directory(. DIR_LIB_SRCS)
4 
5 # 生成链接库
6 
7 add_library(mathfunctions ${DIR_LIB_SRCS})

  3)根目录下CMakeLists.txt文件如下所示:

 1 # CMake要求最低版本号
 2 
 3 cmake_minimum_required (VERSION 2.8)
 4 
 5 # 项目信息
 6 
 7 project (Dome3)
 8 
 9 # 查找当前目录下所有源文件并保存到DIR_SRCS变量中
10 
11 aux_source_directory(. DIR_SRCS)
12 
13 # 添加math子目录
14 
15 add_subdirectory(math)
16 
17 # 指定生成目标
18 
19 add_executable(Demo main.cpp)
20 
21 # 添加链接库
22 
23 target_link_libraries(Demo mathfunctions)

  4)执行 cmake . 和 make 得到所需的可执行文件。

五、参考

  超详细的CMake教程 - 一杯清酒邀明月 - 博客园 

  如有不正之处,敬请指正!

 

标签:cmake,源文件,add,初识,所示,CMake,DIR
From: https://www.cnblogs.com/hjxiamen/p/16770190.html

相关文章

  • JavaScript--初识
    一、JavaScript的了解1995年,网景公司与Sun公司结为开发联盟,共同完成LiveScript的开发。后网景把LiveScript改名为JavaScript。二、JavaScript的概述JavaScript是一个轻......
  • 初识c语言
    前言小伙伴们大家好,今天开始,我们即将开启c语言的正是学习,从初级到进阶,想必大家都听说过c生万物,可想而知c语言对于我们程序员的重要之处,从此篇博客开始将持续更新c语言的相关......
  • python cmake 下载失败?   No CMAKE_C_COMPILER could be found.
    1.pipinstallcmake--default-timeout=100-ihttps://pypi.tuna.tsinghua.edu.cn/simple 2.第二个错误: --Buildingfor:VisualStudio162019  --Selectin......
  • CMake —— 跨平台 编译 软件 & visual studio支持
    CMakeisanopen-source,cross-platformfamilyoftoolsdesignedtobuild,testandpackagesoftware.CMakeisusedtocontrolthesoftwarecompilationprocess......
  • 初识Linux(五)------ 文件与文件系统的压缩,打包与备份
    1. 压缩文件在Linux的环境中,压缩文件的扩展名大多是:“*.tar,*.tar.gz,*.tgz,*.gz,*.Z,*.bz2,*.xz”,为什么会有这样的扩展名呢?不是说Linux的扩展名没有什么作......
  • Ubuntu系统CMake& CMake GUI更新 (cmake & cmake-gui)
    由于CMake具有良好的向后兼容性,ModernCMake推荐用户尽量安装CMake的最新版本,然而在Ubuntu系统APT仓库中的CMake版本一般较老旧。Ubuntu20.04以下版本的用户可以使用K......
  • 使用最新版 gcc cmake
    debian获取最新的包(容器里测试常用)echo'debhttp://deb.debian.org/debiantestingmain'>>/etc/apt/sources.listaptinstall-ybuild-essentialgccg++cmake......
  • 如何在CMake中启用C++ 17
    如何在CMake中启用C++17MiP*_*MiP  38 c++ cmake visual-studio c++17 我正在使用VS15.3,它支持集成的CMake3.8.如何在不为每个特定编译器编写标志的情况下定......
  • CMake学习记录(一)
    从一个简单的例子学起首先看下面的简单示例文件结构如下Demo├─CMakeLists.txt└─main.ccCMakeLists.txt内容如下cmake_minimum_required(VERSION3.18......
  • opencv-contrib-python的安装:Set OPENCV_ENABLE_NONFREE CMake option and rebuild th
    问题描述前往本页,可查看opencv-python和opencv-contrib-python的区别。​​https://docs.opencv.org/master/​​比如,SIFT就需要用到opencv-contrib-python包中的cv2.xfeat......