打开终端,输入:
查看安装CMake版本
src目录存放源文件,include目录包含src所引用的头文件,搭建的环境生成的对象在build文件夹下,输出的elf文件位于bin文件夹下,动态库和静态库位于lib文件夹下。
只有一个源文件
- bin
- build
- include
- src
- main.cpp
在根目录下新建一个CMakeLists.txt文件。
- cd到build目录下,执行命令, 成功生成Makefile文件;
- 再在build目录下,执行命令, elf文件成功生成;
- 切换到bin目录下,运行命令,显示运算结果
- 如果需要重新生成,则运行命令
src下有多个源文件
- bin
- build
- include
- testFunc1.h
- testFunc.h
- src
- main.cpp
- testFunc1.cpp
- testFunc.cpp
一种方法是直接在命令中添加所有的源文件。如果源文件过多,我们可以利用cmake提供的命令,其中dir指定目录,var存放源文件列表的变量。
命令会将src目录下的所有源文件添加进来,然而并不是所有的源文件是我们需要的,此时可以利用命令定义存放我们需要的源文件。
对于这种正规的工程架构,我们有两种CMakeLists.txt文件的编写方式,一种是在最外层目录下建一个CMakeLists.txt文件,调用src目录下的CMakeLists.txt文件
里外两层CMakeLists.txt
- 在最外层建一个CMakeLists.txt
- 执行cmake时,调用src目录下的CMakeLists.txt运行
- cd切换至buildu目录,执行,再执行
只使用一层CMakeLists.txt
库也就是预先编译好的方法的集合,加上头文件就可以被别人调用。根据链接时期不同,库可以分为静态库和动态库。静态库在程序编译时链接(常用.a结尾),而动态库在程序运行时链接完成(常以.so结尾)。两者的最大区别在于,静态库链接时直接被加载到程序中,而动态库链接时只是保留接口,与程序代码独立,有利于降低程序的耦合性。
动态库和静态库的编译控制
- build
- CMakeLists.txt
- lib
- testFunc
- testFunc.cpp
- testFunc.h
其中:
: 生成静态库或动态库
: 设置最终生成库的名称
库的链接
- bin
- build
- CMakeLists.txt
- src
- main.cpp
- testFunc
- inc
- testFunc.h
- lib
- libtestFunc.a
- libtestFunc.so
其中:
: 在指定目录下查找指定库,把库的绝对路径放在变量里。再执行时就会去寻找库是否存在,提前发现错误。
: 链接库与目标文件
版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/do-yfwjc/22944.html