首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Gnu make:运行shell命令并使用退出代码设置全局变量

Gnu make是一个构建自动化工具,它可以根据规则描述文件(Makefile)中定义的依赖关系和命令来自动构建软件项目。在Makefile中,可以使用shell命令来执行系统命令,并且可以使用退出代码来设置全局变量。

具体而言,当使用shell命令执行系统命令时,可以使用make的内置函数$(shell command)来调用。这个函数会执行指定的命令,并返回其输出结果。例如,可以使用以下方式将命令的输出结果赋值给一个全局变量:

代码语言:txt
复制
VAR := $(shell command)

其中,VAR是全局变量的名称,command是要执行的系统命令。

在执行shell命令时,可以通过退出代码来判断命令是否成功执行。一般来说,退出代码为0表示命令执行成功,非零值表示命令执行失败。可以使用make的内置变量$?来获取上一条命令的退出代码。例如,可以使用以下方式将退出代码赋值给一个全局变量:

代码语言:txt
复制
VAR := $(shell command; echo $$?)

其中,VAR是全局变量的名称,command是要执行的系统命令。

通过使用退出代码设置全局变量,可以在Makefile中根据命令执行的结果来进行条件判断和控制流程。例如,可以根据命令执行成功与否来设置不同的编译选项或执行不同的构建步骤。

对于腾讯云相关产品和产品介绍链接地址,由于要求不能提及具体品牌商,建议在使用Gnu make时,可以结合腾讯云的云服务器(CVM)和云函数(SCF)等产品来实现构建自动化和部署。具体的使用方法和配置可以参考腾讯云的官方文档和开发者指南。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • Shell脚本的简单排错法及调试程序bashdb

    如果只是语法或命令上的错误还是比较容易辨别的,但往往一些逻辑或算法错误就不容易发现,因为语法正确且本身不会造成程序运行错误。比如说下面的脚本,本来想连续 10 次做某些操作的,结果却迟迟没输出。...如下查看 bash 版本: [root@localhost ~]# bash --version GNU bash, version 3.1.25(1)-release (x86_64-redhat-linux-gnu.../configure make && make install 安装完成后,我们便可以在终端使用 bashdb 命令了,改命令典型用法如下: [root@localhost ~]# bashdb --debug...向前搜索pat 二、Debug控制类: h     帮助 help  命令 得到命令的具体信息 q     退出bashdb x     算数表达式 计算算数表达式的值,显示出来 !!    ...空格Shell命令 参数 执行shell命令 使用bashdb进行debug的常用命令(cont.)

    1.4K71

    《Linux命令行与shell脚本编程大全》第十七章 创建函数

    可以将shell脚本代码放进函数中封装起来,这样就能在脚本中的任何地方多次使用它了。 17.1 基本的脚本函数 函数:是一个脚本代码块,可以为其命名并在代码中任何位置重用。...… 如果函数最后执行的语句失败了,这里就会返回非0,最后成功了(不管前面有没有失败)返回都是0. 17.2.2 使用return命令 bashshell使用return命令退出函数返回特定的退出状态码...如果你在shell命令行界面的提示符下运行myfuncs shell脚本,shell会创建一个新的shell并在其中运行这个脚本。...它会为那个新的shell定义这里面的函数,但当你运行另外一个要用到这些函数的脚本时,它们是无法使用的。...如何使用使用函数库的关键在于source命令,source命令会在当前的shell上下文中执行命令。而不是创建一个新的shell。 source命令有个快捷的别名,称作点操作符。 如何使用: . .

    699100

    Linux系统下刨析hello world背后的秘密

    编译编译过程是对源代码进行语法分析,优化产生对应的汇编代码的过程。同样使用gcc也可得到汇编代码gcc -S helloworld.c -o helloworld.s。...汇编汇编的过程比较简单,就是将源代码翻译成可执行的指令,生成目标文件。对应的gcc命令为gcc -c helloworld.c -o helloworld.o。...下面在Ubuntu环境下,可以使用strace跟踪系统调用,从而可以帮助我们研究系统程序加载、 运行退出的过程。 strace ./helloworld execve("....+++ exited with 0 +++ 在Linux系统上, 当我们执行命令时,首先是由shell调用fork,然后在子进程中来执行这个命令。strace是helloworld开始执行后的输出。...然后ld加载c库open("/lib/x86_64-linux-gnu/libc.so.6", O_RDONLY|O_CLOEXEC),利用mmap及mprotect设置程序的各个内存区域,到这里,程序运行的环境已经完成

    58620

    CMake搭建编译环境总结

    CMake搭建编译环境总结 ---- 目录 前言 入门案例:单个源文件 工程编译 多个源文件 其他用法 设置局部变量 设置自定义全局变量 获取自定义全局变量 指定目标(bin/库)输出路径 设置环境变量...获取环境变量 设置编译器 设置依赖库路径 包含头文件路径 添加编译器编译选项 添加打印 CMakeLists路径嵌套 控制编译流程 Shell脚本传递宏至CMakeList CMakeLists传递变量至代码工程...}/..) ## 使用局部变量PROJECT_PATH include_directories(${PROJECT_PATH}/Ipc) 设置自定义全局变量 ## Proxy/CMakelists.txt...将此命令行写入脚本,便能实现Shell脚本传递宏至CMakeList。 ## 增加TEST宏 cmake . -DTEST ## 增加TEST_OPTION=ON cmake ....同样的,个人代码也需要与编译Linux配套的交叉工具编译,才能在Linux环境运行。一般在Ubuntu上编译运行,只需要设置为gcc/g++即可。

    2.3K20

    Linux makefile 教程 非常详细,且易懂

    五、让make自动推导 GNUmake很强大,它可以自动推导文件以及文件依赖关系后面的命令,于是我们就没必要去在每一个[.o]文件后都写上类似的命令,因为,我们的make会自动识别,自己推导命令。...make一般是使用环境变量SHELL中所定义的系统Shell来执行命令,默认情况下使用UNIX的标准Shell——/bin/sh来执行命令。...还有就是如果在变量中使用函数,那么,这种方式会让我们的make运行时非常慢,更糟糕的是,他会使用得两个make的函数“wildcard”和“shell”发生不可预知的错误。...注意,这个函数会新生成一个Shell程序来执行命令,所以你要注意其运行性能,如果你的Makefile中有一些比较复杂的规则,大量使用了这个函数,那么对于你的系统性能是有害的。...一、make退出make命令执行后有三个退出码: 0 —— 表示成功执行。 1 —— 如果make运行时出现任何错误,其返回1。

    4.3K20

    007.Linux系统命令行入门

    退出登陆状态 exit logout crtl + d 3. 终端 每次打开一个命令行窗口,都是开启一个新的终端,包括远程连接的窗口,使用tty命令来查看当前窗口的终端 ? 终端与终端的通信 ?...:关闭系统切断电源 systemctl halt:关闭系统,CPU停止工作 systemctl suspend:暂停系统运行 systemctl hibernate:系统休眠 systemctl...查找出内容后,使用n跳转到同方向的下一个匹配到的字符串所在行,使用N跳转到反方向的上一个匹配到的字符串所在行 q:退出man UI 5.2 command --help 使用command --help...,退出当前终端 Ctrl + r 搜索执行过的命令 Ctrl + g 从搜索历史命令的UI中退出 Esc + ....获取上一条命令使用空格分隔后的最后一部分 Ctrl + l 清除屏幕内容 Ctrl + s 锁定终端 Ctrl + q 解锁终端 Ctrl + z 暂停执行在终端运行任务 !! 执行上一条命令 !

    1.4K20

    Linux系统——shell脚本编程基础介绍

    脚本介绍: 当命令或语句不在命令行执行,而是通过一个程序文件执行时,这类文件就被称为shell脚本或shell程序文件,类似于WIN系统下面的批处理程序 2、shell脚本语言的种类 Bourneshell...then 返回中间输入内容 fi 通过缩进让代码容易读 4、shell脚本执行 它执行时,会先查看系统全局变量里的内容,然后从环境变量开始执行,再执行shell脚本的内容 执行几种方法...bash环境下读取执行脚本中的内容,并且脚本可以是无执行权限 5、shell变量介绍 变量分为:环境变量(全局变量)与局部变量 环境变量: 用于定义shell运行环境,保证它的命令正确执行,...shell通过环境变量来确定登陆用户名、命令路径、终端类型、登陆目录等,所有的环境变量都是系统的全局变量,环境变量也可以在命令行中设置,但用户退出时这些变量也会丢失,因此可以将变量配置在用户家目录中.baxh_profile...0 0表示成功,2是权限不够,127是没有找到运行命令 $$ 获取当前执行的脚本的进程号 $* 获取当前shell的所参数,将所有命令行参数视为单个字符串 @ 获取当前shell的所参数,将命令行每个参数视为一个字符串

    2.2K10

    推荐一款嵌入式Linux开源框架与封装-cpp-tbox

    内含main框架,开箱即用 使用内置的 main 框架处理了所有与业务无关的工作。您不需要关心日志怎么输出、参数怎么解析、程序怎么退出、main函数怎么写这些琐碎的事情。main框架都为您处理好了。...具有类Shell命令终端 可以与运行中的服务通过telnet进行交互,令其打印内部数据,或是执行特定的动作。这极大地降低了调试难度。 shell交互示例 4....日志打印展示 3) 灵活的日志输出过滤器,且能运行时修改 可在程序运行时针对不同的模块单独设置日志等级,如下: 设置日志等级 5....的命令终端,可实现运行时与程序进行命令交互 main 主框架 实现了完备的程序启动流程与框架,让开发者只需关心业务代码 run 执行器 是个可执行程序,可加载多个由参数-l xxx指定的动态库,运行其中的...Make make 3rd-party modules RELEASE=1 完成之后,头文件与库文件都在 .staging 目录下。

    33610

    自动生成Makefile的全过程详解

    3、生成configure 我们使用autoscan命令来帮助我们根据目录下的源代码生成一个configure.in的模板文件。...autoconf 是用来生成自动配置软件源代码脚本(configure)的工具。configure脚本能独立于autoconf运行,且在运行的过程中,不需要用户的干预。...你还可以试着使用一些其 他的make命令,如make clean,make install,make dist,看看它们会给你什么样的效果。感觉如何?...7、 Makefile 在符合GNU Makefiel惯例的Makefile中,包含了一些基本的预先定义的操作: make 根据Makefile编译源代码,连接,生成目标文件,可执行文件。...make distcheck 生成发布软件包对其进行测试检查,以确定发布包的正确性。

    1.8K20

    Makefile经典教程(掌握这些足够)

    1.5 让make自动推导 GNUmake很强大,它可以自动推导文件以及文件依赖关系后面的命令,于是我们就没必要去在每一个[.o]文件后都写上类似的命令,因为,我们的make会自动识别,自己推导命令...make一般是使用环境变量SHELL中所定义的系统Shell来执行命令,默认情况下使用UNIX的标准Shell——/bin/sh来执行命令。...还有就是如果在变量中使用函数,那么,这种方式会让我们的make运行时非常慢,更糟糕的是,他会使用得两个make的函数“wildcard”和“shell”发生不可预知的错误。...echo *.c) 注意,这个函数会新生成一个Shell程序来执行命令,所以你要注意其运行性能,如果你的Makefile中有一些比较复杂的规则,大量使用了这个函数,那么对于你的系统性能是有害的...一、make退出make命令执行后有三个退出码: 0 —— 表示成功执行。 1 —— 如果make运行时出现任何错误,其返回1。

    2.7K20
    领券