Makefile8--条件判断语句

Makefile基础语法 文章目录一、Makefile介绍二、Makefile基础语法2.1、语法编译规则2.2、变量定义2.3、通配符使用(*, %)2.4、目标文件搜索(VPATH)2.5、伪目标(.PHONY)2.6、条件判断2.7、常用函数2.8、命令执行(\)四、-e传参错误 一、Makefile介绍   Makefile 可以简单的认为是一个工程文件的编译规则,描述了整个工程文件的编译和链接等相关规则。通俗的讲,Makefile 能够实现大批量文件的简化编译的操作。我们只需要执行 make 命令,工程就会自动编译。每次想 阅读详情

学习自狄泰软件学院唐佐临老师Makefile课程,文章中图片取自老师的PPT,仅用于个人笔记。


在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

实验1 :ifneq 比较两个变量是否相等,makefile 中 命令前可以用 Tab 键,但是条件判断语句前不允许用 Tab键!!!只能用空格键!!!!

.PHONY : test

var1 := A
var2 := $(var1)

# makefile 允许定义空值变量
var3 :=

test:
	#注意  ifeq ($(var1),$(var2))  不是命令,是条件判断语句,makefile 中 命令前可以用 Tab 键,但是条件判断语句前不允许用 Tab键!!!只能用空格!!!!
    ifeq ($(var1),$(var2)) 
		#可执行命令 前面可以用Tab键
		@echo "var1 == var2"
    else
		@echo "var1 != var2"
    endif
    

mhr@ubuntu:~/work/makefile1$ 
mhr@ubuntu:~/work/makefile1$ make
var1 == var2
mhr@ubuntu:~/work/makefile1$ 

实验2:ifneq 比较变量和一个空参数即常量空值,makefile 中 命令前可以用 Tab 键,但是条件判断语句前不允许用 Tab键!!!只能用空格键!!!!

.PHONY : test

var1 := A
var2 := $(var1)
var3 :=

test:
	#比较变量和一个空参数即常量空值
    ifneq ($(var2),)
		@echo "var2 is NOT empty"    
    else
		@echo "var2 is empty"    
    endif
	

mhr@ubuntu:~/work/makefile1$ 
mhr@ubuntu:~/work/makefile1$ make
var2 is NOT empty
mhr@ubuntu:~/work/makefile1$ 

实验3
ifdef 判断 变量是否有值
ifndef 判断 变量是否为空值

.PHONY : test

var1 := A
var2 := $(var1)
var3 :=

test:
    
    #判断 var2是否定义了值
    ifdef var2
		@echo "var2 is NOT empty"    
    else
		@echo "var2 is empty"    
    endif
    
      #判断 var2是否定义了值
    ifndef var3
		@echo "var3 is empty"    
    else
		@echo "var3 is NOT empty"    
    endif

mhr@ubuntu:~/work/makefile1$ 
mhr@ubuntu:~/work/makefile1$ make
var2 is NOT empty
var3 is empty
mhr@ubuntu:~/work/makefile1$ 
mhr@ubuntu:~/work/makefile1$

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
实验4

.PHONY : test

#变量的普通赋值
var1 :=
var2 := $(var1)

#变量的递归赋值,make解释器在预处理即加载makefile 的时候,
var3 =
var4 = $(var3)

#var3 = 3 

test:
    ifdef var1 
		@echo "var1 is defined"
    else
		@echo "var1 is NOT defined"
    endif
    
    ifdef var2
		@echo "var2 is defined"    
    else
		@echo "var2 is NOT defined"    
    endif
    
    ifdef var3 
		@echo "var3 is defined"
    else
		@echo "var3 is NOT defined"
    endif
    
    ifdef var4
		@echo "var4 is defined"    
    else
		@echo "var4 is NOT defined"    
    endif

mhr@ubuntu:~/work/makefile1$ make
var1 is NOT defined
var2 is NOT defined
var3 is NOT defined
var4 is defined
mhr@ubuntu:~/work/makefile1$ 

打印结果很奇怪 var1 2 都正确的识别到了是空值 是未定义的,var3也是别到了是未定义的,但是 var4却没有被识别到时空值,明明是被 var3递归赋值的啊,应该和var3一样才对啊。答案是这样的,var3 var4采用的是递归赋值的方式,这意味着make解释器在加载makefile 的时候,根本就不能判断出 var4的值应该是什么,make 解释器只知道 var3是没有值的,但是他无法判断var4是不是有值的,要等到执行这个makefile的时候才知道,make解释器认为 在递归赋值的情况之下, var4 = $(var3) 这样写,var4是被定义了具体值的,

在这里插入图片描述

飞塔防火墙CVE-2022-40684漏洞复现:手把手教你搭建靶场环境(附调试技巧) 本文详细指导如何搭建Fortinet飞塔防火墙CVE-2022-40684认证绕过漏洞的靶场环境,涵盖虚拟机部署、网络配置、调试模式开启及漏洞原理分析。通过手把手教程,读者可掌握漏洞复现与深度调试技巧,深入理解该认证绕过漏洞的利用与防御。 阅读详情

相关推荐

黑群晖断电后存储池‘已损毁’?别慌,SSH里这几条命令能救急

本文详细解析黑群晖断电后存储池显示‘已损毁’的紧急修复方法。通过SSH命令行工具,提供从诊断到修复的完整流程,包括RAID阵列重新组装、设备重建等关键步骤,帮助用户恢复数据访问。适用于因意外断电导致的存储池异常情况。

weixin_42651748的博客 375

Makefile判断自定义变量

我们知道makefile中判断变量是用ifeq,这个ifeq既能判断命令行传进来的变量,又可以判断makefile内自定义的变量。 ifeq ($(platform), ) files:=$(foreach directory, $(dirs), $(wildcard $(directory)/*.config)) OBJ:=$(notdir $(files)) else $(info no such platform of $(platform)) #需要顶格写 #####如果不为空,说明定义了编译

tianyexing2008的博客 4057

【Ensp】FTP服务器设置和FTP解析

大部分的多媒体多媒体应用协议,如SIP,FTP,NetMeeting协议等,使用约定的固定端口来初始化一个控制连接,再动态地选择端口用于数据传输,并且这些端口选择是不可预测的。在防火墙设置时,可以通过ASPF(应用层报文过滤)中的Server Map表来满足多通道协议的正常工作,它正常检测应用层报文信息,并动态地根据报文内容创建和删除临时的Server Map表项,以允许其它非约定端口通过防火墙。(5)我们可以在路由器或能访问ftp服务器的设备上,通过cli命令行的方式来访问ftp服务器。

进击的小小白 1862

make/Makefile学习之二Makefile文件中条件判断和字符串处理函数的使用

Makefile文件中条件判断和函数的使用一、条件判断语句1.1 ifeq 判断条件是否相等,相等则向下执行1.2 ifneq 判断条件是否不相等,不相等则向下执行 一、条件判断语句 1.1 ifeq 判断条件是否相等,相等则向下执行 1、语法: ifeq (<argv1> , <argv2>) #最常用 ifeq '<argv1> , <argv2>' ifeq "<argv1>

weixin_47273317的博客 1万+

【企业微信自建应用-前端篇】企业微信自建应用开发流程详细介绍

最近接到需求,需要我在企业微信端自建一个应用,用来接受PC端派发的工单,告警,公告等内容。这里写一个帖子汇总一下我经历的全流程开发,当然这是基础的流程啊。因为功能要求也不高。后面如果开发更多的东西再补充。

weixin_44265726的博客 9398

使用 Simulink 进行电力电子系统的大信号模型仿真

电力电子系统(Power Electronics System)包括各种功率转换器(如 DC-DC 转换器、逆变器等)。这些设备中的关键组件(如 MOSFET、IGBT、电容器、电感器等)不仅影响系统的性能,还直接关系到系统的稳定性、效率和可靠性。因此,在设计阶段进行详细的建模和仿真至关重要。大信号模型仿真的目的是通过模拟系统在非线性条件下的真实行为,评估其瞬态响应、稳态性能以及对不同负载和输入电压变化的响应。通过本教程,我们介绍了如何使用 Simulink 进行电力电子系统的大信号模型仿真。背景介绍。

xiaoheshang_123的博客 303

Makefile编译原理 条件判断语句

条件判断语句之前可以有空格,但不能没有Tab字符('\t')一条件完整的条件语句必须位于同一makefie中。可以根据条件的值来决定make的执行。可以比较两个不同变量或者变量和常量值。

weixin_49303682的博客 925

化工过程设计软件:Aspen Plus二次开发_(2).二次开发概述

假设我们需要创建一个自定义的换热器模型,该模型能够计算两个物流之间的热交换量,并根据传热系数和换热面积进行调整。ACM 模型代码示例!自定义换热器模型!参数:传热系数 U (W/m^2·K)!换热面积 A (m^2)!热物流 T_hot_in (K), T_hot_out (K), F_hot (kmol/h)!冷物流 T_cold_in (K), T_cold_out (K), F_cold (kmol/h)!模型输入!U - 传热系数!A - 换热面积!

kkchenjj的博客 368

makefile 条件判断语句

makefile中支持条件判断语句。可以根据条件的值决定 make 的执行。可以比较两个不同变量或者变量和常量值。条件判断语句只能用于控制 make 实际执行的语句;但是,不能控制规则中命令的执行过程。注意:中间不可以有空格。下一篇介绍函数的定义于调用。

wuyiyu_的博客 5169

在Ubuntu上安装Node.js编程

在Ubuntu操作系统上安装Node.js是非常简单的,本文将为您提供详细的安装步骤。这是一个简单的Node.js HTTP服务器示例,它将在本地主机的端口3000上监听请求,并返回"Hello, World!npm是Node.js的包管理器,您可以使用它来安装和管理Node.js模块。您已成功在Ubuntu上安装了Node.js,并创建并运行了一个简单的Node.js应用程序。现在,您已经成功安装了Node.js和npm,让我们创建一个简单的Node.js应用程序并运行它。如有任何疑问,请随时提问。

CodeNexus的博客 3524

【DDR5 PCB走线SI/PI仿真调试】详细全攻略

问题场景发现症状优化措施过孔Stub效应TDR波形尖峰,信号反射严重使用盲孔,背钻减少Stub,降低Via数量串扰过大眼图闭合,误码率增加增加走线间距,插入地线隔离,减少平行长度电源阻抗过高PDN谐振导致纹波大多频率去耦,靠近电源引脚布置多档电容,合理分层信号时序失配优化走线长度匹配,避免信号走线跨层跳变DDR5设计不仅是硬件的挑战,更是仿真能力的考验。掌握SI/PI仿真,理解信号背后的物理本质,才能真正把握高速接口的“灵魂”!

weixin_43199439的博客 987

Makefile——条件判断语句

本文写于 狄泰软件学院Makefile课程学后感 makefile中支持条件判断语句 - 可以根据条件的值来决定make的执行 - 可以比较两个变量或者变量和常量值 if×××(arg1,arg2) # for true ...

weixin_41477765的博客 1451

一文就够-InfiniBand 技术全面解析:从原理到实践的通俗易懂指南

想象一下,在一个超级数据中心里,成千上万台服务器需要像蜜蜂群体一样高效协作。如果用传统的网络连接,就像让每只蜜蜂都排着队传递消息,效率极低。InfiniBand(简称 IB)就是为了解决这种 "通信拥堵" 而生的高速网络技术,它专门为高性能计算(HPC)、数据中心和云计算环境设计,就像给服务器之间搭建了多条高速公路,让数据可以飞驰而过。

jundao1997的专栏 1395

【Makefile由浅入深完全学习记录8】条件判断语句

加qq:1126137994 微信:liu1126137994 一起学习更多技术~ 今天来学习Makefile中条件判断语句! Makefile也算是一门语言,它有自己的语法,那么它应该也会像C/C++语言一样,支持条件判断语句! Makefile中的条件判断语句: 可以根据条件的值来决定make的执行 可以比较两个不同的变量或者变量和常量的值 ifxxx (arg1,arg2) #for...

厚积薄发 1085

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

8.条件判断语句

目录 1.makefile中支持条件判断语句 2.注意事项 3.条件判断语句的语法说明 4.条件判断关键字 ​ 5.一些工程经验 6.下面的代码的输出相同吗? 7.小结 1.makefile中支持条件判断语句 可以根据条件的值来决定make的执行 可以比较两个不同变量或者变量和常量值 2.注意事项 条件判断语句只能用于控制make实际执行的语句;但是不能控制规则命...

qq_34738528的博客 191

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

makefile中使用条件判断语句

条件判断语句举例 Make 可以根据运行时不同情况选择执行不同分支。 libs_for_gcc = -lgnu normal_libs = foo : $(OBJS) ifeq ($(CC), gcc) # 不缩进 $(CC) -o foo $(OBJ) $(libs_for_gcc) # 传递命令,缩进 else $(CC) -o fo...

hmxz2nn的博客 4820

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

第8课 - 条件判断语句

1. makefile中的条件判断语句 (1)makefile 中支持条件判断语句   — 可以根据条件的值来决定 make 的执行   — 可以比较两个不同变量或者变量和常量值方法        ifxxx (arg1,arg2)       # for true       else       # for false       endif (2)注意事项:条件判断语句只能用于控...

梦心之魂的博客 60

8.支持条件判断语句

1.makefile中支持条件判断语句 可以根据条件的值来决定make的执行 可以比较两个不同变量或者变量和常量值 2. 注意事项 条件判断语句只能用于控制make实际执行的语句;但是,不能控制规则中命令的执行过程 3.条件判断关键字 关键字 功能 ifeq 判断参数是否相等,相等为true,否则为false ifneq 判断参数是不否相等,不相等...

qq_37933895的博客 294

makefile-03-条件判断

8.条件判断语句http://blog.51cto.com/11134889/2108167 8.1.语法规则 Makefile中支持条件判断语句,可以直接比较两个不同变量的值和常量值。 注意:条件判断语句只能用于控制make实际执行的语句,不能控制规则中命令的执行过程。 条件判读语法说明: 条件判断关键字: 示例: .PHONY : test var1 := A var...

IoT的搬运工!!! 202

makefile shell条件判断汇总

1.makefile判断文件是否存在 使用wildcard函数与ifeq或者ifneq: 格式: ifneq ($(MISC_CONFIG), $(wildcard $(MISC_CONFIG))) … else … endif 示例,判断…/sdk_compose/config是否存在: MISC_CONFIG=../sdk_compose/config ifneq ($(MISC_CON...

Aero's WorkSpace. 5078

Makefile入门

Makefile入门

weixin_54859557的博客 1377

条件判断语句

条件判断语句 1、makefile中支持条件判断语句 可以根据条件的值来决定make的执行 可以比较2个不同变量或者变量和常量值 if xxx (arg1,arg2) #for ture else #for false endif 2、注意事项 条件判断语句只能用于控制make实际执行的语句;但,不能控制规则中命令的执行。 3、条件判断语句的语法说明 常用形式 if xxx (arg1,arg2) 其他合法形式 if xxx “arg1” “arg2” if xxx ‘arg1’ ‘arg

LangLang_2020的博客 342

ifeq makefile 或语句_makefile ifeq 语句

Page 12 使用条件判断 ifeq,else,endif ifeq ($(CC),gcc) Ifeq表示条件语句的开始,并指定一个条件表达式,表达式包含两个参数, 以逗号分隔,表达式以圆括号括起......-c main.c -o main.o lib.o : lib.c lib.h $(CC) $(CFLAGS) -c lib.c -o lib.o clean : rm myprog $(O...

weixin_39747807的博客 1223

[makefile学习笔记]有关makefile中条件判断执行细节的一些讨论

在常规的makefile条件判断当中,大多数人讲解仅限于一个条件判断+一个目标的简单演示,但是实际上复杂程度远不止于此,相信这篇文章可以解开你的疑惑.

u012686596的博客 737

Makefile入门知识总结八---条件判断的使用

八、条件判断的使用 和C编程一样,在makefile中添加条件判断可以使make在运行的过程中根据不同的条件状况执行不同的分支。条件表达式可以是比较变量的值,也可以是比较变量和常量的值。在条件判断的使用过程中的关键字有:ifeq、ifneq、 ifdef、 ifndef 、else、 endif。就字面上的意思来看,前面四个条件判断的关键字不难理解。分别是:是否相同、是否不同、是否...

菠萝菠萝哒X 630

Makefile编译原理 条件判断语句(1)

实验 :ifneq 比较两个变量是否相等,makefile 中 命令前可以用 Tab 键,但是条件判断语句前不允许用 Tab键!条件判断语句之前可以有空格,但不能没有Tab字符(‘\t’)一条件完整的条件语句必须位于同一makefie中。ifndef 判断 变量是否为空值。ifdef 判断 变量是否有值。

2401_84010816的博客 403
上一篇: Makefile7--变量的高级主题(下)
下一篇: C基础第16课 位运算符分析
Ma浩然
博客等级 码龄9年 1万+粉丝 462原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ma浩然

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值