CMake的第一个示例

在大多数开源项目中都会广泛使用CMake来实现在不同平台,不同编译环境下的正常编译。

然而很多情况下编译并不理想,使用CMake时遇到很多问题。今天开始会不定期更新CMake的使用方法。

开始今天的项目

系统环境:win10操作系统、vs2019编译环境、CMake最新版本(2022年7月28日,这个时间的最新版本)、代码编写工具(notepad++)

        注:这里使用notepad++文本编辑工具是为了尽量模拟开源项目时只有代码,而没有

" **.sln"文件。

代码和CMakeLists目录结构

|Makefile
            |code
                        |src
                                    main.cpp

                                    op.cpp
                        |include
                                    |add
                                                add.h
                                    |sub
                                                sub.h
                         CMakeLists.txt
            CMakeLists.txt

文件夹介绍:

1、 Makefile文件夹内,code目录是代码部分包括源代码和头文件,build是后期使用cmake命令时创建的,这里的CMakeLists.txt 是项目的简单根。

Makefile\\CMakeLists.txt内容如下:

# 设置最小cmake版本
cmake_minimum_required(VERSION 3.8)

# 设置项目的名称
project(calc)

# 添加子目录段,这个段里有一个CMakeList文件
add_subdirectory(code)

2、 在code文件下包含头文件和源代码和子CMakeLists.txt文件,这里的CMakeLists.txt是为了在本目录下的指导如何编译的文件

Makefile\\code\\CMakeLists.txt 内容如下:这里在add_executable()也将头文件包含进去,这样在执行cmake命令后,使用vs2019打开时会将头文件放入header里,不在add_executable()里写入也可以,因为咱们在include_directories()时将头文件包含了。


# 设置最小cmake版本
cmake_minimum_required(VERSION 3.8)

# 设置项目名称
project(calc)

# 添加代码文件
add_executable(${PROJECT_NAME} ${PROJECT_SOURCE_DIR}/src/main.cpp ${PROJECT_SOURCE_DIR}/src/op.cpp

		${PROJECT_SOURCE_DIR}/include/add/add.h
		${PROJECT_SOURCE_DIR}/include/sub/sub.h
)

# 添加头文件
include_directories(${PROJECT_SOURCE_DIR}/include)

3、 在code\\include文件夹内包含两个文件夹add(+操作)和sub(-操作),这里只展示add文件夹里的内容

 

Makefile\\code\\include\\add\\add.h 内容如下:没错就一个函数的声明

int add(int a, int b);

Makefile\\code\\include\\sub\\sub.h

内容如下:也是一个函数声明

int sub(int a, int b);

4、 在code\\src文件夹下的内容如下图,其中main.cpp是主函数的流程,op.cpp是实现上面两个头文件里写的函数。

 

src\\main.cpp 内容如下: 这里的include直接使用"<>" 符号包含的,可行,不知是现代编译器允许这样写,还是在CMakeLists时 include_directories(${PROJECT_SOURCE_DIR}/include) 这句声明使得编译器能够寻路到该头文件作为系统头文件的标记(这里不懂表达读者了解即可)。

#include <iostream>
#include <add/add.h>
#include <sub/sub.h>
using namespace std;

int main()
{
	
	cout << "add" << add(1,2)<<endl;
	cout << "sub" << sub(10,7)<<endl;
	cout<<"test make" << endl;
	return 0;
}

 src\\op.cpp 内容如下:只有两个函数的实现,不用谢包含了那些头文件,因为就实现的两个函数,编译器会通过头文件找到这两个函数的实现

int add(int a,int b)
{
	return a + b;
}
int sub(int a,int b)
{
	return a - b;
}

 文件夹和代码介绍完毕了。下面介绍如何使用cmake命令对这个项目进行编译

打开cmd命令窗口,通过cd命令到达该项目目录

该目录的内容 

通过cd build到达build目录下

在这里执行  cmake ..  后面两个点是代表上一层目录,即通过 ".." 可以寻找到Makefile\\CMakeLists.txt  文件

cmake ..

 

 此时,build文件下出现如下文件内容

 然后,双击calc.sln 就会打开vs2019环境,在里面进行代码的编写,项目的编译。可以看到头文件也包含在内,Makefile\\code\\CMakeLists.txt 文件里如果,写成改为,则不会显示头文件内容。

# 添加代码文件
add_executable(${PROJECT_NAME} ${PROJECT_SOURCE_DIR}/src/main.cpp ${PROJECT_SOURCE_DIR}/src/op.cpp

		${PROJECT_SOURCE_DIR}/include/add/add.h
		${PROJECT_SOURCE_DIR}/include/sub/sub.h
)

# 改为
# 添加代码文件
add_executable(${PROJECT_NAME} ${PROJECT_SOURCE_DIR}/src/main.cpp ${PROJECT_SOURCE_DIR}/src/op.cpp
)

 

然后将calc设置为活动,右键calc -> Set as Startup Project 然后点运行按钮,即可。

 点击运行:

运行结果:只是测试和学习项目,代码比较容易。我相信上面介绍的很详细了,如果需要源码,我可能已经删除了。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值