首页 > 系统相关 >Linux上CMAKE的使用

Linux上CMAKE的使用

时间:2024-04-04 23:24:28浏览次数:27  
标签:可执行文件 文件 cmake SRC Linux LIST 使用 CMAKE 目录

Linux上CMAKE的使用

简单使用

格式如下:

cmake_minimum_required(VERSION 3.0) # 最低版本3.0
project(main) # 项目名称
# 配置编译器
set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} -g)

# 配置头文件搜索路径
# include_directories()
# 配置库文件搜索路径
# link_directories()
# 设置需要编译的源文件列表
set(SRC_LIST main.cpp)

# 把.指定路径下的所有源文件名字放入变量名SRC_LIST里面
# aux_source_directory(. SRC_LIST)

# 表示生成可执行文件server ,由SRC_LIST变量所定义的源文件编译而来
add_executable(server ${SRC_LIST})

# 表示server这个目标文件,需要链接muduo_net muduo_base pthread这三个库文件
target_link_libraries(server muduo_net muduo_base pthread)

# 先执行cmake . 在执行make


编写完后在终端中先执行cmake .命令

image

ls查看出现了哪些新文件

ChatClient.h  ChatServer.h  CMakeCache.txt  CMakeFiles  cmake_install.cmake  CMakeLists.txt  m  main.cpp  Makefile

继续执行make命令

image

这个时候server执行文件就编译完成了,可以使用。

进一步规范化目录结构

上面的一系列文件全部都在一个文件夹里面,太杂乱了,我们建立多个目录来规范

文件目录作用

bin目录:存放可执行文件,这些文件可以直接运行,例如 ls、cd、mkdir 等命令。

lib目录:存放库文件,这些文件包含了程序运行所需的一些函数和代码,程序在运行时可以调用这些库文件。

include目录:存放头文件,头文件包含了程序开发所需的一些宏定义、数据结构和函数声明等信息,程序在开发时可以包含这些头文件。

src目录:存放源代码文件,这些文件包含了程序的源代码,程序员可以编辑这些文件来修改程序的功能。

build目录:存放编译生成的文件,例如目标文件、可执行文件等,这些文件是编译过程中的中间产物,通常不需要手动修改。

example目录:存放示例代码,通常用于演示如何使用某个软件包或库。

thirdparty目录:存放第三方库文件,这些库文件不是由系统或软件包提供的,而是由第三方开发人员提供的。

具体步骤

先创建一个build目录,进入该目录中,执行cmake ..命令后,编译文件后存放在build目录中了

image

再创建一个bin目录,负责存放可执行文件,同时在cmake文件中添加这行命令

# 设置可执行文件的存放目录
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin)

image

重新执行一遍cmake .. 和make
image
此刻bin目录下已经有可执行文件
image

主目录下的CMAKE

查看当前我们的文件目录,我们也可以在主目录中编写CMAKE

主目录cmake

cmake_minimum_required(VERSION 3.0)
project(main)

#配置编译选项
set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} -g)

#指定搜索的子目录
add_subdirectory(muduo_test)

# 设置可执行文件的存放目录
# set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin)

子目录cmake

# 配置头文件搜索路径
# include_directories()
# 配置库文件搜索路径
# link_directories()
# 设置需要编译的源文件列表
set(SRC_LIST ./main.cpp)

# 设置可执行文件的存放目录
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin)

# 把.指定路径下的所有源文件名字放入变量名SRC_LIST里面
# aux_source_directory(. SRC_LIST)

# 表示生成可执行文件server ,由SRC_LIST变量所定义的源文件编译而来
add_executable(server ${SRC_LIST})

# 表示server这个目标文件,需要链接muduo_net muduo_base pthread这三个库文件
target_link_libraries(server muduo_net muduo_base pthread)

此时我们的目录结构如下,我们右键选择生成所有项目,即可达到和之前一样的效果

image

生成成功后,主目录下bin目录下已经有了可执行文件

image

标签:可执行文件,文件,cmake,SRC,Linux,LIST,使用,CMAKE,目录
From: https://www.cnblogs.com/AndreaDO/p/18113916

相关文章

  • 【Linux】GCC编译器(七)
    文章目录初步了解安装GCC编译第一个程序编译选项初步了解GCC是GNUCompilerCollection的缩写,是一个由GNU项目开发的编译器集合。GCC的历史和发展:GCC最初由理查德·斯托曼(RichardStallman)发起,目的是创建一个自由的Unix操作系统。1987年,GCC首次发布,它最初只能......
  • linux 中 yum makecache 、yum update、yum upgrade的作用
     001、yummakecache的作用是将服务器上的软件包信息缓存到本地,以提高搜索和安装软件的速度。 002、yumupdate:该命令用于更新系统中已安装的软件包到最新版本,但不会安装新的软件包或删除已安装的软件包。 003、yumupgrade:该命令也用于更新系统中已安装的软件包到最新......
  • Linux守护进程之udev-笔记
    一、什么是udev?        udev 是Linux系统中的一个守护进程,它的主要任务是管理所有的设备节点。你可以把它想象成一个设备的“管家”,负责识别、监控和管理连接到计算机上的硬件设备。当一个新设备被连接到系统时,`udev`会立刻识别它,并为其创建相应的文件和目录,这......
  • Linux操作系统之nfs网络文件系统
    目录一、NFS简介1.2安装配置NFS 一、NFS简介nfs类似于windows文件共享将linux的一个目录共享到网络中,网络中的其他所有主机都可以使用这个共享目录中的文件samba文件共享可以在linux中通过samba共享一个目录,然后在linux中可以访问这个共享 nfs网络磁盘可......
  • (通俗易懂)Unix/Linux上的五种IO模型
    接续上一节内容(通俗易懂)阻塞、非阻塞、同步、异步区别-CSDN博客,非常接地气地解释了阻塞、非阻塞、同步、异步的内容。由于内容深度具有延续性,建议看本节内容之前,先过一遍上一节内容噢~由于最近忙于项目,拖了好久才续更这一节内容。本节,我们更深入地探讨一下Unix/Linux上的五种I......
  • git配置不同文件夹(及其子文件夹)下仓库使用不同配置
    git的user和email配置可以通过下面的方式配置:[email protected]我除了公司的多个项目,也有自己的一些项目,需要在不同的文件夹下配置两套user+email目标:在不同的文件夹下git新建仓库commit时,会自动选择对应的正确配置可以......
  • Linux——编译链接和gcc
    1.gcc,g++,gdb安装命令行写gcc,g++,gdb根据提示安装:sudoaptinstallgcc/g++/gdb2.gcc分布编译链接(1)预编译:gcc-Emain.c-omain.i(2)编译:gcc-Smain.i-omain.s(3)汇编:gcc-cmain.s-omain.o(4)链接gccmain.o-omain执行:./main或者:全路径/mai......
  • Linux——文件查看命令 文件编辑命令
    文件查看命令(1)cat1)查看文件内容(内容较少时使用):cat文件名2)合并文件:cat文件名1文件名2>文件名33)往文件中写入数据,(Ctrl+d结束输入);(2)moremore文件名文件内容较多时用more(空格,回车往下翻,b回滚)(3)lessless文件名看完内容之后不会显示到屏幕上;(......
  • Linux华为云Hadoop配置环境
    手工搭建Hadoop环境(Linux)_弹性云服务器ECS_最佳实践(huaweicloud.com)https://support.huaweicloud.com/bestpractice-ecs/zh-cn_topic_0000001698668477.html?locale=zh-cn#ZH-CN_TOPIC_0000001698668477__li49001945163110跟着傻瓜式CV即可。气死我了!找了半天,最后在官网......
  • 使用 ChatGPT 集成精通高级 Excel(一)
    原文:MasteringAdvancedExcel-WithChatGPTIntegration译者:飞龙协议:CCBY-NC-SA4.0前言欢迎阅读我的书!在这本全面指南中,我们将探索Excel、VisualBasicforApplications(VBA)和ChatGPT这三大强大工具的结合。这些工具结合了数据分析、自动化和对话式人工智能的力量,让......