适用于 Windows 和 Cygwin 的 Makefile

2024-01-27

我需要有一个makefile在 Windows 和 Cygwin 下工作。我在 makefile 正确检测操作系统并设置适当的变量时遇到问题。

目标是为以下命令设置变量,然后使用变量调用规则中的命令:

  • 删除文件:rm在西格温,del在Windows中。
  • 删除目录:rmdir(不同的 Cygwin 和 Windows 中的参数)
  • 复制文件:cp在西格温,copy在 视窗。
  • 测试文件是否存在:test在西格温,IF EXIST在Windows中。
  • 列出文件的内容:cat在 西格温,type在Windows中。

这是我的尝试,它总是使用else条款:

OS_KIND = $(OSTYPE) #OSTYPE is an environment variable set by Cygwin.
ifeq ($(OS_KIND), cygwin)
 ENV_OS = Cygwin
 RM = rm -f
 RMDIR = rmdir -r
 CP = cp
 REN = mv
 IF_EXIST = test -a
 IF_NOT_EXIST = ! test -a
 LIST_FILE = cat
else
 ENV_OS = Win_Cmd
 RM = del -f -Q
 RMDIR = rmdir /S /Q
 IF_EXIST = if exist
 IF_NOT_EXIST = if not exist
 LIST_FILE = type
endif

我使用正斜杠字符“/”作为目录分隔符。这是 Windows 命令的问题,因为它将其解释为程序参数而不是分隔符。有人知道如何解决这个问题吗?

我在 Windows 控制台和 Cygwin 中将 make 与 Mingw 一起使用。


我强烈建议你搬到CMake http://cmake.org自动生成您的 Makefile。这些问题都已经解决了,并且支持MingW、MSYS和Cygwin。

RM:           file(REMOVE [file1 ...])
RMDIR:        file(REMOVE_RECURSE [file1 ...]) # (not quite the same functionality; deletes files, too)
CP:           file(COPY files... DESTINATION...)
REN:          file(RENAME <oldname> <newname>)
IF_EXIST:     if(EXISTS file-name)
IF_NOT_EXIST: if(NOT EXISTS file-name)
LIST_FILE:    file(READ filename variable [LIMIT numBytes] [OFFSET offset] [HEX])

如果您生成 MinGW Makefile,所有路径都会自动转换为 DOS 样式。这是一件美丽的事情。

最后,它也使 Makefile 的其余部分变得更加简单。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

适用于 Windows 和 Cygwin 的 Makefile 的相关文章

  • 未提供参数时如何指定 C# System.Commandline 行为?

    在我的控制台应用程序中 当未提供控制台参数时 将执行我指定列表 在本例中为参数 3 的任何处理程序 调用该处理程序时 布尔参数设置为 false 但对我来说 根本不调用它更有意义 如何防止这种情况发生并显示帮助文本 using System
  • 注销租约抛出 InvalidOperationException

    我有一个使用插件的应用程序 我在另一个应用程序域中加载插件 我使用 RemoteHandle 类http www pocketsilicon com post Things That Make My Life Hell Part 1 App
  • 如何将 protobuf-net 与不可变值类型一起使用?

    假设我有一个像这样的不可变值类型 Serializable DataContract public struct MyValueType ISerializable private readonly int x private readon
  • 在 C 中匹配二进制模式

    我目前正在开发一个 C 程序 需要解析一些定制的数据结构 幸运的是我知道它们是如何构造的 但是我不确定如何在 C 中实现我的解析器 每个结构的长度都是 32 位 并且每个结构都可以通过其二进制签名来识别 举个例子 有两个我感兴趣的特定结构
  • 复制目录内容

    我想将目录 tmp1 的内容复制到另一个目录 tmp2 tmp1 可能包含文件和其他目录 我想使用C C 复制tmp1的内容 包括模式 如果 tmp1 包含目录树 我想递归复制它们 最简单的解决方案是什么 我找到了一个解决方案来打开目录并读
  • 使用接口有什么好处?

    使用接口有什么用 我听说它用来代替多重继承 并且还可以用它来完成数据隐藏 还有其他优点吗 哪些地方使用了接口 程序员如何识别需要该接口 有什么区别explicit interface implementation and implicit
  • 由 IHttpClientFactory 注入时模拟 HttpClient 处理程序

    我创建了一个自定义库 它会自动为依赖于特定服务的 Polly 策略设置HttpClient 这是使用以下方法完成的IServiceCollection扩展方法和类型化客户端方法 一个简化的例子 public static IHttpClie
  • 将 Word 文档另存为图像

    我正在使用下面的代码将 Word 文档转换为图像文件 但是图片显得太大 内容不适合 有没有办法渲染图片或将图片保存到合适的尺寸 private void btnConvert Click object sender EventArgs e
  • 在 Visual Studio 2010 中从 Fortran 调用 C++ 函数

    我想从 Fortran 调用 C 函数 为此 我在 Visual Studio 2010 中创建了一个 FORTRAN 项目 之后 我将一个 Cpp 项目添加到该 FORTRAN 项目中 当我要构建程序时出现以下错误 Error 1 unr
  • 是否有实用的理由使用“if (0 == p)”而不是“if (!p)”?

    我倾向于使用逻辑非运算符来编写 if 语句 if p some code 我周围的一些人倾向于使用显式比较 因此代码如下所示 if FOO p some code 其中 FOO 是其中之一false FALSE 0 0 0 NULL etc
  • DbContext 和 ObjectContext 有什么区别

    From MSDN 表示工作单元和存储库模式的组合 使您能够查询数据库并将更改分组在一起 然后将这些更改作为一个单元写回存储 DbContext在概念上类似于ObjectContext 我虽然DbContext只处理与数据库的连接以及针对数
  • 使用自定义堆的类似 malloc 的函数

    如果我希望使用自定义预分配堆构造类似 malloc 的功能 那么 C 中最好的方法是什么 我的具体问题是 我有一个可映射 类似内存 的设备 已将其放入我的地址空间中 但我需要获得一种更灵活的方式来使用该内存来存储将随着时间的推移分配和释放的
  • C# HashSet 只读解决方法

    这是示例代码 static class Store private static List
  • 为什么 std::strstream 被弃用?

    我最近发现std strstream已被弃用 取而代之的是std stringstream 我已经有一段时间没有使用它了 但它做了我当时需要做的事情 所以很惊讶听到它的弃用 我的问题是为什么做出这个决定 有什么好处std stringstr
  • CMake 无法确定目标的链接器语言

    首先 我查看了this https stackoverflow com questions 11801186 cmake unable to determine linker language with c发帖并找不到解决我的问题的方法 我
  • 如何在非控制台应用程序中查看 cout 输出?

    输出到调试窗口似乎相当繁琐 我在哪里可以找到cout如果我正在编写非控制台信息 则输出 Like double i a b cout lt lt b lt lt endl I want to check out whether b is z
  • 调用堆栈中的“外部代码”是什么意思?

    我在 Visual Studio 中调用一个方法 并尝试通过检查调用堆栈来调试它 其中一些行标记为 外部代码 这到底是什么意思 方法来自 dll已被处决 外部代码 意味着该dll没有可用的调试信息 你能做的就是在Call Stack窗口中单
  • 如果没有抽象成员,基类是否应该标记为抽象?

    如果一个类没有抽象成员 可以将其标记为抽象吗 即使没有实际理由直接实例化它 除了单元测试 是的 将不应该实例化的基类显式标记为抽象是合理且有益的 即使在没有抽象方法的情况下也是如此 它强制执行通用准则来使非叶类抽象 它阻止其他程序员创建该类
  • 无法接收 UDP Windows RT

    我正在为 Windows 8 RT 编写一个 Windows Store Metro Modern RT 应用程序 需要在端口 49030 上接收 UDP 数据包 但我似乎无法接收任何数据包 我已按照使用教程进行操作DatagramSock
  • 当我使用 OpenSSL1.1.0g 根据固定的 p 和 g 值创建 Diffie Hellman 密钥协议密钥时,应该执行哪些检查?

    您好 我尝试通过这段代码使用修复 p 和 g 参数来制作 Diffie Hellman Keysanswer https stackoverflow com a 54538811 4706711 include

随机推荐

  • 如何从 pytorch 模块获取子模块序列?

    对于火炬module https pytorch org docs master generated torch nn Module html 我想我可以用 named children named modules等来获取子模块的列表 但是
  • 为什么 d3.js v3 在实现缩放时会破坏我的力图,而 v2 不会?

    我有一个使用 d3 js 创建的强制布局 我希望同时拥有可拖动力布局的正常功能以及缩放功能 我基本上已经从 http jsfiddle net nrabinowitz QMKm3 http jsfiddle net nrabinowitz
  • 在 SQL Server 日期时间字段中格式化日期时间的正确方法是什么

    我在 C 中有一个 dateTime 对象 我想插入 SQL Server 日期时间字段 正确的格式是什么 正确的方法是使用参数化查询 not文本格式 然后你就可以使用强类型SqlDbType DateTime http msdn micr
  • 反应本机平面列表不滚动

    我已经使用 FlatList 很多次了 但从未有过这样的经历 我有一个视图 页面顶部有一个图像 而我的列表在下面 当我尝试滚动时 列表弹到顶部 对此找不到好的解决方案 这是我的清单
  • 在 Play Framework 中使用 POST 路由参数

    我有一个登录路由 应将其输入参数作为 POST 变量传输 我已经这样定义了我的路线 POST v1 accounts login controllers v1 Accounts login username String password
  • 标准WPF选项卡控件中是否有Selected Tab Changed事件

    在WPF中 是否有一个事件可以用来确定何时TabControl选定的选项卡发生变化吗 我尝试过使用TabControl SelectionChanged但是当孩子在选项卡中的选择发生更改时 它会被多次触发 您需要检查事件的来源以隔离最外层的
  • UISegmentedControl 委托/触摸事件

    我有一个 UISegmentedControl 有六个段 我希望它们在值更改时调用一个方法 而且当每个段获得一个UIControlEventTouchDragIn因为我希望当用户尝试选择 UILabel 上的某些内容并将手指拖过控件时 UI
  • 在哪里可以找到 IntelliJ 其他语言的词典?

    IntelliJ 拼写检查器仅捆绑了英语和阿拉伯语 奇怪 我认为它是在东欧制造的 他们甚至没有捆绑他们的语言 我的客户是德国人 所以我的所有代码都是英语 代码 德语 界面 混合的 而且我找不到 IntelliJ 的德语词典 当前的IDEA版
  • 排除字符串列表中的相似点以提取差异

    我有一个句子列表 除了书名之外 其他句子都相同 如何循环遍历列表并排除相似之处以找到书名 这是一个例子 可以是任何有相似之处的短句 蝇王 这本书堪称经典 杀死一只知更鸟 是一本经典之作 麦田里的守望者 这本书堪称经典 我遇到的问题是我不能简
  • 如何阻止 Telerik RadWindow 在下一次回发时始终重新加载

    我在网页中调用 RadWindow 作为对话框 我从代码隐藏中调用 因为我需要传递一些参数 radWindow1 NavigateUrl url 英国 德国 法国 radWindow1 VisibleOnPageLoad true 这很有效
  • ruby on Rails 的 Mahout 插件

    我想在 Ruby on Rails 项目中使用 Apache Mahout 来实现推荐和协作过滤 特别是我的要求是 建议相关标签 推荐相关文章 根据用户的喜好提示他评论文章 根据用户的地理位置和其他元信息 向他推荐类似的用户 如果任何其他解
  • 我什么时候应该明确使用@synthesize?

    据我所知 从 XCode 4 4 开始 synthesize将自动生成属性访问器 但刚才我读了一个关于的代码示例NSUndoManager 并且在代码中它注意到 synthesize被明确添加 喜欢 interface RootViewCo
  • Azure DevOps 中“bash exited with code 1”中的 Cypress 测试退出失败

    我已将 Cypress 测试设置为在 Azure DevOps 中运行 我通过 yml 文件中的 CMD 命令运行测试 然后获取测试结果 当测试通过时 一切都按预期工作 并且测试结果显示在摘要中 当测试失败时 CMD 步骤会失败 并显示错误
  • 如何使用 Powershell 下载并安装适用于 Windows 的 git 客户端

    我必须编写自动 powershell 脚本来从 gihtub 克隆存储库 但我需要使用命令行安装 git 您能否让我知道如何使用命令行在窗口上下载并安装 git 而无需执行任何手动工作 提前致谢 希望在不使用巧克力的情况下做同样的事情 以下
  • 为什么 tkinter(或海龟)似乎丢失或损坏?它不应该是标准库的一部分吗?

    当尝试使用 Tkinter 标准库包或其相关功能 使用海龟图形 时 我看到了许多不同的问题 turtle和内置的 IDLE IDE 或者使用将此作为依赖项的第三方库 例如使用 Matplotlib 显示图形窗口 似乎即使没有隐藏标准库模块名
  • 如何在 HashSet 中搜索时使用正则表达式

    我正在编写一个 Java 程序 我需要在其中搜索集合中的特定单词 必须搜索的单词类似于 wo d where 可以用任何其他字母代替 我正在使用正则表达式来匹配此类类型的单词大小写 这就是我到目前为止所拥有的 HashSet
  • 如何加速InnoDB count(*)查询?

    这里有很多类似的问题 但很多答案都说强制使用索引 这对我来说似乎并没有加快任何速度 我想在我的网站上显示一个 实时 计数器 显示表中的行数 有点像一些网站如何 实时 显示注册用户数量或其他统计数据 即使用 ajax 或 websockets
  • 将锚标记设置为看起来像提交按钮

    我有一个表单 其中有一个 提交 按钮和一个 取消 锚点 HTML 是这样的
  • AuthLogic 表单给出了不正确的验证错误 - 为什么?

    我根据 AuthLogic 示例设置了 AuthLogic for Rails http github com binarylogic authlogic example http github com binarylogic authlo
  • 适用于 Windows 和 Cygwin 的 Makefile

    我需要有一个makefile在 Windows 和 Cygwin 下工作 我在 makefile 正确检测操作系统并设置适当的变量时遇到问题 目标是为以下命令设置变量 然后使用变量调用规则中的命令 删除文件 rm在西格温 del在Windo