目录
1、Cmake简介
CMake是一个强大的跨平台构建工具,它能够自动生成用于构建项目的Makefile、Visual Studio项目文件或其他构建系统所需的文件。使用CMake,可以更轻松地管理复杂的C语言项目,使它们易于维护和跨平台。
如果对Makefile不了解可以看此文章→Makefile入门
2、安装CMake
首先,需要安装CMake。在Linux设备可以使用sudo apt-get install cmake。或者从CMake官网下载适合操作系统的安装程序。安装完成后,可以在终端中运行以下命令来检查CMake是否安装成功:
cmake --version
如果成功安装,将看到CMake的版本信息。
3、CMakeLists.txt
cmake的核心就是CMakeLists.txt
文件,(注意:CMakeLists.txt
文件名严格区分大小写,确保文件名准确无误)告诉CMake如何构建项目。通过CMakeLists.txt可以决定工程文件生成二进制文件,动态库,静态库文件,以及链接各种库文件,十分灵活好用,以下几种实例都会讲到。
4、单目录简单实例
一个工程目录下最简单需要编写一个CMakeLists.txt文件,然后创建build文件在此文件内进行 cmake . . && make编译此工程。如果多级目录,也可以使用多级CMakeLists.txt用于分开管理。以下是一个简单的示例:
4.1、CMakeLists.txt
cmake_minimum_required(VERSION 3.16)
PROJECT (MyCProject)
设置编译选项,加入-g可以gdb调试
SET(CMAKE_CXX_FLAGS “-g”)
SET(CMAKE_C_FLAGS “-g”)
添加源文件
file(GLOB SOURCES “src/*.c”)
添加头文件目录
#INCLUDE_DIRECTORIES(…/include)
生成可执行文件
add_executable(src ${SOURCES})
以上的CMakeLists.txt
文件做了以下事情:
- CMakeLists.txt不区分函数名字母大小写,一般一个函数都用大写或者都用小写
- **#**号用于注释语句
- cmake_minimum_required( )指定CMake的最低版本。
- PROJECT( ) 定义项目名称。
- SET(CMAKE_CXX_FLAGS “-g”)设置C语言标准,此外set(A B)函数还用于赋值将B赋予A。
- 使用file()函数将所有在
src/
目录下的.c
文件赋给变量SOURCES
。- 使用include_directories()函数添加头文件目录。
- 链接库文件路径LINK_LIBRARIES(xxxx.a xxxx.so)
- 链接库文件LINK_DIRECTORIES(. ./lib/ . ./build/xxx.a . ./build/xxx.so)
- 最后,使用**add_executable()**函数生成可执行文件,将源文件
${SOURCES}
执行生成src可执行程序。- 生成静态库文件 ADD_LIBRARY(xxx STATIC ${SRC_LIST})生成静态库文件xxx.a
- 生成动态库 ADD_LIBRARY(xxx SHARED ${SRC_LIST})生成动态库文件xxx.so
4.2、构建bulid
内部构建
直接在项目目录下进行cmake 和 make ,这会导致出现很多临时文件,很不友好和美观
外部构建
在项目根目录 新建build文件 在此文件中进行cmake . . 和make,隐藏不不要的临时文件,便于其他操作。
例如:在项目根目录下创建一个build/
文件夹,并在终端中进入该文件夹。然后运行以下命令:
cmake …
这将使用根目录中的CMakeLists.txt
文件来配置项目。接下来,运行以下命令来编译项目:
make
这将生成可执行文件MyCProject
,可以在build/
目录下找到它。
4.3、运行C语言程序
现在,可以在终端中运行的C语言程序:
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数网络安全工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年网络安全全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上网络安全知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加VX:vip204888 (备注网络安全获取)
给大家的福利
零基础入门
对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。
同时每个成长路线对应的板块都有配套的视频提供:
因篇幅有限,仅展示部分资料
一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
d42.png#pic_center)
因篇幅有限,仅展示部分资料
一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
[外链图片转存中…(img-UXTyypLZ-1712478314758)]