makefile中使用powershell && 使用powershell进行数学计算

在makefile中使用shell命令,格式为:$(shell 命令)。例如:$(shell pwd),用来获取当前路径。

但是只有在Linux下直接使用有效,在Windows下使用会出现错误,不过,GNU/make提供了指定shell的功能。例如,如果想要将cmd作为shell,可以这样:

SHELL=cmd

当然,使用方法也要稍微修改一下,比如获取当前路径,由于cmd中没有pwd命令,但可以使用:echo %cd%。所以要修改为:

$(shell echo %cd%)

我不知道是bug还是我的用法有错误,make似乎不支持将shell修改为powershell,如果设置了“SHELL=powershell”,在使用$(shell pwd)时会出现如下错误:

process_begin: CreateProcess(NULL, pwd, ...) failed.
make: Makefile:156: pipe: No such file or directory

这意味着传递给CreateProcess()函数的参数不正确。此函数的第一个参数为程序,第二个参数为命令。在在错误中可以看到,程序变成了NULL,使得CreateProcess()不知道创建什么进程。要改成如下形式才能正常工作:$(shell powershell pwd),而且这样也不用指定shell了。但是有一个问题是,$(shell powershell pwd)明显要比指定了cmd后使用$(shell echo %cd%)慢,或许是每次执行命令都需要创建一个新的powershell进程所致。我暂时不知道怎么解决,因此只能在cmd不支持的命令时用powershell。

make本事没有计算的功能,需要调用shell来完成。例如:

TEST1=2
TEST2=($(TEST1)*20)    
#make没有计算功能,因此TEST2=(2*20),而不是40,如果使用此定义的程序没有计算功能,就可能出错。

如果使用powershell,可以这样:

TEST1=2

TEST2=$(shell powershell $(TEST1)*20)

#这样,TEST2=40

但是powershell默认数值运算输出为10进制,如果要使用16进制,就需要进行转换:

TEST1=0x1234

TEST2=$(shell powershell (TEST1+0x1000).ToString(\'x\'))
#TEST2=2234
#输出带0x的16进制字符串

TEST3=$(shell powershell (\'0x\'+(TEST1+0x1000).ToString(\'x\')))

#记得引号要使用转义符,"'"=>"\'"。否则执行会出错

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Windows系统上安装Makefile需要进行以下步骤: 1. 首先,你需要安装一个GNU工具集,其包括GNU Make。你可以从MinGW(Minimalist GNU for Windows)或者Cygwin获取这些工具。这两个工具集都提供了GNU工具的Windows版本。 - MinGW:你可以从MinGW的官方网站(https://mingw-w64.org/doku.php)下载安装程序。选择适合你系统的版本,并按照安装向导进行安装。在安装过程,确保选择了"mingw32-make"作为安装的组件之一。 - Cygwin:你可以从Cygwin的官方网站(https://www.cygwin.com/)下载安装程序。下载并运行安装程序,按照向导进行安装。在选择软件包时,搜索并选择"make"和"gcc-core"等相关软件包进行安装。 2. 安装完成后,打开命令提示符(CMD)或者PowerShell,并输入"make -v"命令来验证Make是否成功安装。如果成功安装,将显示Make的版本信息。 3. 确保你的Makefile文件位于当前工作目录下。在命令提示符或者PowerShell使用"cd"命令切换到Makefile所在的目录。 4. 运行Make命令来执行Makefile。在命令提示符或者PowerShell,输入"make"命令并按下回车键。Make将根据Makefile的规则和依赖关系来编译和构建项目。 请注意,Makefile是一种用于自动化构建的脚本文件,它使用Make工具来执行一系列命令。在使用Makefile之前,你需要了解Makefile的语法和规则。如果你对Makefile不熟悉,可以参考相关的教程和文档来学习。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值