使用cmake工具入门笔记

这两天学习了使用cmake工具来组织编译自己的代码工程,使用cmake的需求是随着代码量的积累和调用文件增多自然而然产生的——如果每次调试和编译代码文件都要使用g++并且在后面追加一长串文件的路径,把这种重复的事情做在表面上终归是比较naive的一种方式。

我参考学习了大神潘伟洲的博客(https://www.hahack.com/codes/cmake/
),该文章详细讲述了如何使用cmake工具来管理和调试自己的项目工程。目前我明确需要”多目录多个源文件“,因此先把这一部分掌握,记录在这里。

  • 0.首先初始的文件树结构如下:
.
├── CMakeLists.txt
├── main.cpp
└── tools
    ├── advCircle.cpp
    ├── advCircle.h
    ├── CMakeLists.txt
    ├── myPoint.cpp
    ├── myPoint.h
    ├── myTree.cpp
    ├── myTree.h
    ├── rectango.cpp
    └── rectango.h

1 directory, 11 files

在main.cpp同级目录下和调用的工具文件夹tools下各有一个CMakeLists.txt,里面的内容是不同的,暂且不表。两个文件的作用是不同的,tools下面的CMakeLists.txt是用于把tools下面的代码文件编译为一个静态库文件供上级的main.cpp调用,而main.cpp同级的CMakeLists.txt是为了连接所需要的工具库来编译和生成Makefile,生成这个Makefile之后再make就可以得到可执行文件了。

    1. tools文件夹里面的CMakeLists.txt编辑如下内容
# 查找当前目录下的所有源文件
# 并将名称保存到DIR_LIB_SRCS变量
aux_source_directory(. DIR_LIB_SRCS)

# 生成链接库
add_library (ToolFunctions ${DIR_LIB_SRCS})

在代码段里面,我把tools文件夹里面最后生成的静态库文件命名为ToolFunctions,这个名称在上级的CMakeLists.txt里面也可以看到。

    1. main.cpp对应的CMakeLists.txt编辑如下内容
# CMake最低版本号要求
cmake_minimum_required (VERSION 2.8)

# 项目信息
project (Demo3)

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

# 添加tools子目录
add_subdirectory(tools)

# 指定生成目标
add_executable(Demo ${DIR_SRCS})

# 添加链接库
target_link_libraries(Demo ToolFunctions)

在这一步里面,把我最后生成的可执行程序命名为“Demo”。

    1. 最后在main.cpp一级的目录下,执行
cmake .

会自动生成所有需要的文件,继续操作

make

成功的话就可以看到定义的可执行程序Demo就出现了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容