首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MinGW的make和MSYS的make有什么不同,哪一个可以在哪里买到?

MinGW的make和MSYS的make有什么不同,哪一个可以在哪里买到?
EN

Stack Overflow用户
提问于 2013-08-02 23:33:13
回答 1查看 9.9K关注 0票数 22

抱歉,如果这是一个相当愚蠢的问题,但我正在努力在NetBeans中设置C++ (这需要MinGW)。它在NetBeans的C/C++部分的文档中说,它只能与MSYS的make一起工作,而不能与MinGW的make一起工作。我想知道两者之间的区别,所以我用谷歌搜索了一下,找到了this question,上面说MinGW包含了两个不同的品牌,mingw32-make (MinGW的品牌)和make (微软的品牌)。然后我在MinGW网站的维基上做了一点挖掘,在常见问题解答中找到了这篇文章:

由于Win32上缺少

,make的“本机”(即:依赖于MSVCRT )端口缺少某些功能,并已修改了功能。在MSYS发行版中还存在一个依赖于MSYS运行时的make版本。此端口的操作更符合make的意图,并且在执行过程中带来的麻烦更少。基于此,MinGW开发人员/维护人员/打包人员决定最好重命名本机版本,以便“本机”版本和MSYS版本可以同时存在,而不会发生文件名冲突。

那么,如果make有两个副本,那么哪个副本在MSYS shell中可用,哪个副本在cmd.exe中可用?两者之间的主要区别是什么?

EN

回答 1

Stack Overflow用户

发布于 2014-08-25 14:41:55

MSYS版本和本机版本之间的主要实际区别是前者使用MSYS shell来执行其命令,而后者使用cmd。这意味着,使用MSYS版本的make,您可以编写与在Unix或Linux系统上相同的食谱,而使用原生Windows版本,您可能需要执行不同的操作。对于简单的命令执行,它们的工作方式是相同的,但对于更复杂的操作,它们的方法必须不同,因为cmd的语法与Unix shell有很大不同。

例如,您可以使用MSYS make处理像这样的递归构建:

代码语言:javascript
复制
recurse-subdirs:
    for i in $(SUBDIRS);            \
    do                              \
        cd $$i && make all || exit; \
    done

而使用原生版本的make时,您必须执行以下操作:

代码语言:javascript
复制
recurse-subdirs: FORCE
    for %%i in ($(SUBDIRS)) do     \
        cd %%i && make all || exit

对于MSYS,也可以安全地假设通常的Unix命令是可用的(例如,rm *.o),而对于本机make,您将希望使用Windows命令(例如,del *.o)。

哪个版本的make可用取决于您如何设置PATH。如果通过搜索PATH可以找到make的两个版本,一个名为make,一个名为mingw32-make,则这两个命令都可用。无论您使用的是MSYS shell还是cmd,都是如此。

票数 21
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18020816

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档