如何正确的使用CMake-创新互联

如何正确的使用CMake?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

10年积累的网站制作、做网站经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先网站设计后付款的网站建设流程,更有津市免费网站建设让你可以放心的选择与我们合作。

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_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

关于如何正确的使用CMake问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注创新互联行业资讯频道了解更多相关知识。


网站栏目:如何正确的使用CMake-创新互联
文章源于:http://scjbc.cn/article/edjsg.html

其他资讯