首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >make-linux和windows格式

make-linux和windows格式
EN

Stack Overflow用户
提问于 2009-05-21 11:59:06
回答 6查看 722关注 0票数 2

我遇到了一个很大的问题,..i在linux操作系统中使用Linux make文件编译了我的c文件。

我想在Windows中通过命令提示符使用相同的make file编译相同的文件。为此,我还有nmake实用程序和Cygwin实用程序。

我已经用简单的make文件用简单的程序成功地做到了这一点。

但是当我使用复杂的C文件和复杂的make文件时,编译是不可能的。

我是否已将linux make文件中的“/”更改为windows中的“\”?还有其他变化吗?

我想知道windows中有什么特殊的make文件格式吗?

还有它们之间的区别..

我真的很需要它。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2009-05-21 22:24:45

不幸的是,nmake只是受到make的松散启发,他们没有做好很多重要的事情。到目前为止,最简单的做法是在两个平台上使用相同风格的make。

在linux上,Gnu make是默认且最佳的选项。

在Windows上,Gnu make有几个来源,但也有一些怪癖可供选择。就我个人而言,我主要使用native win32 build of Gnu make from the GnuWin32 project。您可能希望查看项目的其余包,因为其他一些包也会很有用。

替代来源是CygwinMinGW32/MSYS

Cygwin是在Windows内核之上提供*nix兼容环境的可靠尝试。它由一个DLL组成,该DLL导出大量通过Windows API实现的*nix (尤其是POSIX)系统调用。该DLL对磁盘挂载也有自己的想法,并且更喜欢*nix样式的路径名。DLL本身是GPL许可的(尽管商业使用许可是收费的),并且在Cygwin环境中构建的程序在默认情况下需要它,因此这可能是一个需要考虑的因素。另一个因素是Cygwin对普通Windows用户不友好,因此基于Cygwin的开发项目对于非unix用户来说通常很难处理。然而,对于跨平台开发人员来说,Cygwin可能真的很有用,因为它可以让你得到Makefile所需的所有常见的可疑实用程序,它包括针对GCC的MinGW32原生Windows以及针对Cygwin环境的GCC。

MinGW32是一个移植项目,它很好地移植了GCC编译器,使其可以作为本机Windows可执行文件运行。如果与它们提供的头文件一起使用,则可以通过现代Windows安装附带的C运行时DLL使用几乎所有的Windows API。

MSYS是Cygwin的一个轻量级分支,它包含一组最小的实用程序(以*nix shell开始),这些实用程序通常假定存在于一个典型的*nix Makefile中。与Cygwin不同,MSYS配置为默认目标是本机Windows API。

我在这里试图暗示的是,也许应该直截了当地说明,您的兼容性问题并不是以make you use的方言结束的。

Makefile语言本身高度依赖于可用的命令shell,并且大多数重要的项目Makefile最终都会使用许多*nix核心实用程序,如cp和rm。

我强烈建议从make的GnuWin32版本开始,同时安装MinGW32和MSYS。然后,编写同时在MSYS和linux下工作的Makefile就相对容易了,并且只需要少量的特定于平台的逻辑。

票数 5
EN

Stack Overflow用户

发布于 2009-05-21 12:03:46

你应该考虑跨平台make的CMake,但你真正的问题是你不应该把'/‘改成'\’。如果您在cygwin或msys (推荐)下运行,则应为您处理此问题。

票数 1
EN

Stack Overflow用户

发布于 2009-05-21 12:10:41

NMake是一种windows工具,将仅解析windows样式的路径,即带有驱动器号和反斜杠的路径。因此,您应该使用与cygwin一起安装的GNU Make。

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

https://stackoverflow.com/questions/892585

复制
相关文章

相似问题

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