抱歉,如果这是一个相当愚蠢的问题,但我正在努力在NetBeans中设置C++(需要MinGW).它在NetBeans的C/C++部分的文档中说,它只适用于MSYS的make,而不是MinGW的make.我想知道两者之间的区别,所以我用Google搜索并提出这个问题,说明MinGW包含两种不同的产品,mingw32-make(MinGW的制作)和make(MSYS的制作).然后我在MinGW网站的维基上挖了一下,发现这篇文章埋在FAQ中:
"本机"(即:MSVCRT依赖)make端口缺少某些功能,并且由于Win32上缺少POSIX而具有修改的功能.MSYS发行版中还存在一个依赖于MSYS运行时的make版本.该端口的操作更多,因为make旨在操作并且在执行期间减少了麻烦.基于此,MinGW开发人员/维护人员/打包者决定最好重命名本机版本,以便"本机"版本和MSYS版本可以同时存在而不会发生文件名冲突.
那么,如果有两个make副本,哪一个在MSYS shell中可用,哪一个可用cmd.exe?两者之间的主要区别是什么?
Ros*_*dge 17
两者之间的主要实际区别,MSYS版本和本机版本,前者使用MSYS shell执行其命令,而后者使用cmd.这意味着使用MSYS版本的make可以像在Unix或Linux系统上一样编写配方,而使用本机Windows版本则可能需要以不同的方式执行操作.对于简单的命令执行,它们的工作方式相同,但对于更复杂的操作,配方必须有所不同,因为它cmd具有与Unix shell不同的语法.
例如,您可以使用MSYS make处理这样的递归构建:
recurse-subdirs:
for i in $(SUBDIRS); \
do \
cd $$i && make all || exit; \
done
Run Code Online (Sandbox Code Playgroud)
使用make的原生版本时,您必须执行以下操作:
recurse-subdirs: FORCE
for %%i in ($(SUBDIRS)) do \
cd %%i && make all || exit
Run Code Online (Sandbox Code Playgroud)
使用MSYS也可以安全地假设通常的Unix命令可用(例如rm *.o),而使用本机make则需要使用Windows命令(例如del *.o).
哪个版本的make可用取决于您如何设置PATH.如果通过搜索找到两个版本的make,一个命名make,一个命名mingw32-make,PATH则两个命令都可用.无论您使用的是MSYS shell还是cmd.
| 归档时间: |
|
| 查看次数: |
8202 次 |
| 最近记录: |