我遇到了一个很大的问题,..i在linux操作系统中使用Linux make文件编译了我的c文件。
我想在Windows中通过命令提示符使用相同的make file编译相同的文件。为此,我还有nmake实用程序和Cygwin实用程序。
我已经用简单的make文件用简单的程序成功地做到了这一点。
但是当我使用复杂的C文件和复杂的make文件时,编译是不可能的。
我是否已将linux make文件中的“/”更改为windows中的“\”?还有其他变化吗?
我想知道windows中有什么特殊的make文件格式吗?
还有它们之间的区别..
我真的很需要它。
发布于 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。您可能希望查看项目的其余包,因为其他一些包也会很有用。
替代来源是Cygwin和MinGW32/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就相对容易了,并且只需要少量的特定于平台的逻辑。
发布于 2009-05-21 12:03:46
你应该考虑跨平台make的CMake,但你真正的问题是你不应该把'/‘改成'\’。如果您在cygwin或msys (推荐)下运行,则应为您处理此问题。
发布于 2009-05-21 12:10:41
NMake是一种windows工具,将仅解析windows样式的路径,即带有驱动器号和反斜杠的路径。因此,您应该使用与cygwin一起安装的GNU Make。
https://stackoverflow.com/questions/892585
复制相似问题