CMake入门和CMake外部构建

文章目录

    • CMake
        • 基本命令
        • 多级目录
        • 外部构建
        • 自定义编译选项

CMake

基本命令

每个目录下需要有CMakeLists.txt, 解释如何构建

  • 指定CMake最低版本号要求
    cmake_minimum_required(VERSION 2.8)

  • 指定项目名称

    project(projectName)

  • 指定生成目标

    add_executable(Demo fileList...)

    例如 add_executable(main main.cpp)

    多个文件时只需要在fileList处罗列即可, 空格隔开每个文件名, Demo则是生成的可执行文件名称

  • 执行CMake

    # cmake . .表示当前目录

  • 查找指定文件夹下所有的文件

    aux_source_directory(

    )

    将dir下所有文件名赋值为variable变量, 每个变量名用空格隔开

  • 添加头文件路径

    include_directories("path")

多级目录

多个目录时, 每个目录下面都要有CMakeLists.txt文件

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

对于这种情况: 将math下的代码生成静态链接库

aux_source_directory(. DIR_LIB_SRCS)
# 生成链接库
add_library (MathFunctions ${DIR_LIB_SRCS})

Demo文件夹下:

project(Demo)

aux_source_ddirectory(. DIR_SRC)

# 添加 math 子目录
add_subdirectory(math)

add_executable(Demo main.cc)


# 添加链接库
target_link_libraries(Demo MathFunctions)

这样即可多级目录构建

外部构建

​ 使用cmake . 的是后总是在当前目录生成很多文件和文件夹, 目前来说这些除了Makefile都是没用的,看起来很闹心 。如果可以让生成的文件放到一个固定的目录就好了。

​ 也就是官方推荐的外部构建(out-of-source), 最大的好处是不会再原来的目录下生成与工程无关的文件。

外部构建的方法很简单,一开始使用cmake .的时候这个.表示的是当前目录,那么如果在别的地方,时候cmake命令构建的时候只要给定一个正确的路径就可以了,例如在当前工程目录下创建一个build目录,进入build目录, 然后使用cmake ..即可构建。这样生成的文件就在当前目录下了。

自定义编译选项

后续用的话再更新, 现在刚开始还用不到。

你可能感兴趣的:(工具使用,cmake,cmake教程)