cygwin底下调用nmake.exe的问题

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情
背景:
项目要求开发的系统,共用相同或大致相同的源码,产生windows和Linux版的软件。

一个直观的解决方法是在windows使用vs的solution和project来控制管理编译,
在Linux下用Makefile来控制管理编译。
这种方法的好处是直观便捷。不方便的地方在于要维护较多的平台相关项目文件。

另外一个解决方法是在windows下,用cygwin系统来控制管理编译。Linux下照旧。
这样的话,可以共用更多的项目文件。
这个时候,一般用cygwin来调用nmake.exe来控制编译。
下面描述只针对第2个解决方法。

状况:
一般我们产生两个平台Makefile,例如makefile.win,makefile.linux。
在一个公用的主控Makefile中,根据操作系统分别调用上述两个平台相关Makefile。
例如,调用makefile.win。我们通常使用类似下面的命令
all:
    cmd /c nmake /f makefile.win
在cygwin下,运行Makefile(敲make命令),通常我们会得到这样的错误
NMAKE : fatal error U1065: invalid option '-'
但直接运行cmd /c nmake /f makefile.win
则毫无问题。

原因:
在cygwin下,make命令在执行时,会默认设置变量MAKEFLAGS=--unix,
并把这个变量传递给nmake。nmake就会出现上述错误。

解决方法:
创建一个例如build.bat,其中
set MAKEFLAGS=
nmake /f makefile.win
然后在用cmd /c build.bat来调用nmake。

告别编译报错!Windows 11 + VS2019 下 EDK2 环境保姆级配置指南(含Cygwin、NASM路径避坑) 本文提供Windows 11 + VS2019下EDK2开发环境的详细配置指南,涵盖VS2019组件选择、Cygwin路径设置、NASM安装等关键步骤,帮助开发者避免常见编译错误,快速搭建稳定的EDK2开发环境。 阅读详情

相关推荐

nmake工具的使用

Windows CE的构建系统大量使用了Nmake工具和makfile。在大多数微软的软件和驱动开发包中都会包含Nmake工具。因此,这里有必要介绍一下makefileNmake工具。

NMAKE: fatal error U1065

前几天在利用VS2008编译QT4.7.1时被NMAKE : fatal error U1065: invalid option '-' 这个错误给拦住啦,后来才发现是环境变量:MAKEFLAGS惹的祸,由于公司用的QNX系统,所以我们的开发工具都是QNX Momentics IDE 4.6,安装这个开发环境时自动设置了这个环境变量:MAKEFLAGS = -If:/QNX641/target/qnx6/usr/include

【拥抱变化 -- 知识改变命运】 5063

三方库编译工具汇总

简单介绍几种常见的三方库编译工具

liuxiaojiangtobeno1的博客 1248

cygwin下自定义一个命令行.exe可执行程序

本文主要总结在cygwin编译器下,编译出一个.exe可执行程序,然后在其上,用自定义的命令行指令,驱动该.exe可执行程序对应功能的执行。 比如,我要定义一个test.exe可执行程序,当我在cygwin下,敲入命令行 -start ,则test.exe可执行程序打印出this is a start command!。当我敲入命令行 -stop ,则test.exe可执行程序打印出this i...

净无邪博客 6212

cygwin编译不依赖于cygwin**.dll的exe可执行程序

常规gcc *.c -o *编译出来的exe程序,作为动态编译的如果想要在没有cygwin环境的机器上面运行,则需要依赖cygwin的dll文件, 比如 cygwin*.dll 如果不想编译完之后在去找dll文件和重新装包,可以使用下面的命令: gcc -mno-cygwintest.c 编译出来的会比直接编译在和cygwin1.dll打包到一起的要明显得小. 如果带窗口的程序,则加上加上-mwindows ...

格物穷理 1190

Windows平台运行Makefile的三种实用方法:MinGW、NMake与VS Code集成

Makefile作为经典的自动化构建工具,在类Unix系统中通过定义依赖关系和构建规则,极大地简化了C/C++项目的编译流程。其核心原理在于利用时间戳对比,仅重新编译发生变更的源文件,从而提升构建效率。在跨平台开发场景下,这一技术价值尤为凸显,能够确保不同环境下的构建一致性。然而,当项目迁移至Windows平台时,由于原生环境缺乏make工具以及路径、命令的差异,直接运行为Unix-like环境设计的Makefile会遇到障碍。本文聚焦于解决这一工程实践痛点,系统介绍了三种主流方案:通过MinGW/MSYS

weixin_30731305的博客 350

VEB编译bios过程中出现nmake:multiple CL.EXE write to the same .PDB file 错误

卸载之后VEB不仅不会出现nmake错误,编译速度都从20分钟提升到了5分钟以内。卸载cygwin,详细的卸载教程都可以搜得到。

weixin_56810859的博客 259

Windows平台Makefile构建指南:MSYS2、NMake与WSL三种方案详解

Makefile作为经典的构建自动化工具,其核心原理是通过定义文件依赖关系和执行规则来管理编译流程。在Unix-like系统中,Makefile与Shell环境及GCC工具链深度集成,实现了高效的跨模块编译。然而在Windows平台,由于原生缺乏POSIX兼容的Shell环境和GNU工具链,直接运行Makefile面临兼容性挑战,这凸显了跨平台构建工具的技术价值。针对这一需求,开发者通常需要在Windows上搭建兼容层,主要方案包括:通过MSYS2/MinGW-w64提供类Unix环境,使用Visual S

weixin_34082854的博客 433

Windows上编译Wireshark源代码

<br /><br />Wireshark<br />最近需要开发Wireshark插件,分析一套协议,于是首先要解决的问题就是如何在windows环境下编译Wireshark,编译过程中也借鉴了一些网上的资料,但是基本都有问题,在经历无数次的失败之后的摸索,最终在Wireshark编译成功。<br /> <br />在编译过程中需要一下软件:Visual Studio,Python,Cygwin以及Wireshark源代码。<br />1. Visual Studio<br />我使用的是Visual S

alexander_vc的博客 9062

Windows上源码编译iconv-C++字符集转换库及其依赖库

cygwin、编译、iconv

1484

SDL2 | Cygwin环境下编译、安装SDL2

Cygwin环境下编译、安装SDL2 说明 主机环境:window10 专业版、cygwin 1.解压SDL2源码 压缩包:SDL2-2.0.16.zip 2.编译、安装SDL2 启动mintty.execygwin的执行终端) ::启动脚本 set TOP_DIR=%cd% cd .\ ::set path=C:\NMake;%path% start D:\softwareTools\DesTools\Cygwin64\bin\mintty.exe 配置LOG信息: lanfeiy@yelanfe

I_feige的博客 1273

cygwin和mingw的区别

转载自:http://blog.csdn.net/embededvc/article/details/6829010 Unix下编译通过的C代码,在win32下编译是不能通过的 ,当然Unix 和win32的API都是符合标准C,也就是说,大多数函数调用在unix和win32下是相同的.但是,unix有自己一些独特的API(如fork,spawn,signals,select,socke

This My Life - chisj 791

make 不能处理目录名或文件名中有空格的情况

GNU make can't handle spaces in pathnames Cygwin中的make.exe 不能处理文件名中包含有空格的情况。网络上有人指出这个Bug。但为了版本兼容。官方似乎不准备改正。 使用 mcp2make 1.0.2 将ADS的工程文件转换成makefile文件时,其中有空格的路径名被双引号包括起来了。 "C:\Program...

weixin_30724853的博客 466

windows下wireshark插件开发之源码编译

闲来无事,想做个wireshark的协议解析插件,可以解决一下自己工作中的自定义协议解析问题。好了,废话少说,开始干活。 首先在网上查下资料。想在windows下开发插件环境需求如下:1  需要windows下的C/C++编译环境。 嗯,我装了VS2008,可以用。2 安装cygwin。   去http://www.cygwin.cn/下载一个吧。下载下来的只是一个setu

STK_tianwen的专栏 4401

wireshark编译相关问题

1.出现bash问题,尝试了博客上很多种解决方式都不可行。 包括改变环境变量,改变VS版本。 最终重新安装了另一个版本的Cygwin从而解决了0x1问题。 2.Python环境变量设置时应去掉$(PYTHON_DIR),直接改成绝对路径。 一个问题纠结了4天,效率低下,不过终于弄出来了,可喜可贺!开始我的抓包分析之旅了!

tiamo823的专栏 985

Wireshark 1.xx版本编译遇到的错误以及解决方案

1.         link -nologo -debug -incremental:no -opt:ref -def:win32/zlib.def -dll -i mplib:zdll.lib  -out:zlib1.dll -base:0x5A4C0000 adler32.obj compress.obj crc32.o bj deflate.obj gzclose.obj gzl

aa139433的博客 909

LinuxWindows下编译工具

LinuxWindows下一些编译工具

赤龙绕月的专栏 2133
上一篇: MySQL解析(2)--MySQL版本
下一篇: Build glibc-2.6
Laudon
博客等级 码龄25年 12粉丝 10原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值