• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

CMake的简单应用

c语言 搞代码 4年前 (2022-01-06) 31次浏览 已收录 0个评论
文章目录[隐藏]

这篇文章主要介绍了CMake的简单应用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

 各种不同的Make 工具遵循着不同的规范和标准,所执行的 Makefile 格式也千差万别。如果软件想跨平台,必须要保证能够在不同平台编译,这就得为每一个Make工具写一次 Makefile ,这将是一件让人抓狂的工作。使用CMake工具就可以很好的解决这个问题。

  CMake是一个比make更高级的编译配置工具,它可以根据不同平台、不同的编译器,生成相应的Makefile。通过编写CMakeLists.txt,可以控制生成的Makefile,从而控制编译过程。CMake自动生成的Makefile不仅可以通过make命令构建项目,生成目标文件,还支持安装(make install)、测试安装的程序是否能正确执行(make test,或者ctest)、生成当前平台的安装包(make package)、生成源码包(make package_source)、产生Dashboard显示数据并上传等高级功能,只要在CMakeLists.txt中简单配置,就可以完成很多复杂的功能,包括写测试用例。如果有嵌套目录,子目录下可以有自己的CMakeLists.txt。

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

  1. 编写 CMake 配置文件 CMakeLists.txt 。

  2. 执行命令 cmake PATH 或者 ccmake PATH 生成 Makefile。其中, PATH 是 CMakeLists.txt 所在的目录。

  3. 使用 make 命令进行编译。

语法

  CMake基本语法由命令、注释和空格组成,其中命令是不区分大小写的。符号 # 后面的内容被认为是注释。命令由命令名称、小括号和参数组成,参数之间使用空格进行间隔。变量引用使用 ${VAR} 形式。

  command (args  …)  #comment

常用命令:

    cmake_minimum_来源gaodaima#com搞(代@码网required (VERSION 2.8)  # CMake 最低版本号要求

  project (Demo)               # 指定项目的名称

  set(SRCS main.cpp …)             # 设置变量

  include_directories(/usr/include/jsoncpp)        # 添加头文件目录,比如使用的一些lib库

  aux_source_directory(. DIR_SRCS)     # 查找当前目录下的所有源文件,并将名称保存到 DIR_SRCS 变量

  add_subdirectory(math)           # 添加 math 子目录

  add_executable(Demo main.cc …)       # 指定生成目标,第一个参数为目标文件名

  add_library(MathFunctions ${DIR_LIB_SRCS})   # 添加一个库文件

  target_link_libraries(Demo MathFunctions)    # 添加链接库

获取更多CMake信息:

  cmake –help

  cmake –help-command-list

  cmake –help-variable-list

示例代码

示例代码1:

 cmake_minimum_required(VERSION 2.8)    # CMake 最低版本号要求 set(CMAKE_CXX_FLAGS "-std=c++0x")      # 设置编译参数 include_directories(/usr/include/jsoncpp) # 添加头文件目录 set(SRCS                     # 设置变量SRCS,将所有源文件添加到变量SRCS SamsungRequestResolver.cpp SamsungResolverContainer.cpp SamsungResponseResolver.cpp BanCat.cpp main.cpp ) add_executable(framework ${SRCS})     # 指定生成目标 target_link_libraries(framework jsoncpp hiredis boost_system)  # 添加链接库 

示例代码2:(来源于参考引用1)

代码目录如下所示,./Demo3目录下有一个main.cc文件和一个math目录。对于这种嵌套目录的情况,需要在目录 ./Demo3 和 ./Demo3/math 下各创建一个CMakeLists.txt。

 ./Demo3 | +--- main.cc | +--- math/ | +--- MathFunctions.cc | +--- MathFunctions.h

父目录中的 CMakeLists.txt :

 # CMake 最低版本号要求 cmake_minimum_required (VERSION 2.8) # 项目信息 project (Demo3) # 查找当前目录下的所有源文件 # 并将名称保存到 DIR_SRCS 变量 aux_source_directory(. DIR_SRCS) # 添加 math 子目录,math目录下的CMakeLists.txt文件和源代码会被处理 add_subdirectory(math) # 指定生成目标Demo add_executable(Demo main.cc) # 添加链接库 target_link_libraries(Demo MathFunctions)

子目录中的 CMakeLists.txt:

 # 查找当前目录下的所有源文件 # 并将名称保存到 DIR_LIB_SRCS 变量 aux_source_directory(. DIR_LIB_SRCS) # 生成链接库 add_library(MathFunctions ${DIR_LIB_SRCS})

编译

  在编译之前,首先要将CMakeLists.txt文件放在代码目录中。为了方便管理生成的makefile文件、目标文件等文件,最好创建一个build目录专门用来存放这些文件。在代码目录,依次执行以下命令:

 mkdir build cd build cmake .. make 

参考引用:

  1. http://www.hahack.com/codes/cmake/
  2. https://www.cnblogs.com/qixianyu/p/6574048.html

以上就是CMake的简单应用的详细内容,更多请关注gaodaima搞代码网其它相关文章!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:CMake的简单应用

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址