C 在Windows和Linux上编译

C 在Windows和Linux上编译,c,linux,visual-studio-2008,C,Linux,Visual Studio 2008,我只是在寻找一些指导原则,因为这似乎是一个非常开放的问题 我有一个使用VisualStudio2008SP1编译的项目。我必须进行编译,这样它才能使用GCC4.4.1 C99运行linux 这是一个演示应用程序,不是我自己编写的 源代码的编写可以跨平台(linux、windows),因此代码将在linux上编译和运行。然而,它是使用VS开发的,我没有任何makefile可供使用 我可以写一个make文件。但我不确定这些依赖关系,因为总共有大约20个文件(*.c和*.h) 我只是想知道如何从Vis

我只是在寻找一些指导原则,因为这似乎是一个非常开放的问题

我有一个使用VisualStudio2008SP1编译的项目。我必须进行编译,这样它才能使用GCC4.4.1 C99运行linux

这是一个演示应用程序,不是我自己编写的

源代码的编写可以跨平台(linux、windows),因此代码将在linux上编译和运行。然而,它是使用VS开发的,我没有任何makefile可供使用

我可以写一个make文件。但我不确定这些依赖关系,因为总共有大约20个文件(*.c和*.h)

我只是想知道如何从VisualStudio项目中编写makefile?有什么设置我可以使用吗?什么取决于什么?还有别的吗


非常感谢您的建议,

您可以使用的一个工具是CMake。CMake可以生成VS.net解决方案文件,也可以生成Unix makefile。这条路并不容易,道路上也不是没有颠簸的。(尤其是当构建序列变得复杂时)

可以使用的一个工具是CMake。CMake可以生成VS.net解决方案文件,也可以生成Unix makefile。这条路并不容易,道路上也不是没有颠簸的。(尤其是当构建序列变得复杂时)

从一个非常简单的Makefile开始:

theapp: *.c *.h Makefile
    gcc *.c -o theapp
这两条线将为您提供90%的解决方案(在许多情况下,100%的解决方案)

现在,您只需使用以下工具即可在Unix中制作和运行应用程序:

$ make && ./theapp
我不建议你使用那些复杂的Makefile生成器,比如automake,除非你打算向全世界发布这些东西


对于私人项目,保持Makefile的简单和干净。

从一个非常简单的Makefile开始:

theapp: *.c *.h Makefile
    gcc *.c -o theapp
这两条线将为您提供90%的解决方案(在许多情况下,100%的解决方案)

现在,您只需使用以下工具即可在Unix中制作和运行应用程序:

$ make && ./theapp
我不建议你使用那些复杂的Makefile生成器,比如automake,除非你打算向全世界发布这些东西


对于私有项目,请保持Makefile的简单和干净。

makedepend实用程序将扫描您提供给它的C文件,使用C预处理规则确定它们的依赖关系并将它们输出到Makefile


这应该可以满足您的大部分需求。

makedepend实用程序将扫描您提供给它的C文件,使用C预处理规则确定它们的依赖关系,并将它们输出到一个Makefile


这应该可以满足您的大部分需求。

这只处理Unix make。有了一个跨平台的项目,可能需要使用一个工具为每个平台生成适当的make文件。演示应用程序将只在linux平台上运行。所以我只担心它能否在linux上运行。在向世界发布时,拥有简单、干净的makefiles同样值得。相信我,一个手工编写的简单Makefile比那些autogen的要好16.18亿倍——你根本不知道它们在做什么,定制它们可能需要花费数小时阅读文档。GCC不是一个复杂的程序,编写自己的命令行;简单地说“.o”文件依赖于“.cpp”或“.c”文件就足以让Make to know调用gcc,而且更具可移植性。这只是处理Unix Make。有了一个跨平台的项目,可能需要使用一个工具为每个平台生成适当的make文件。演示应用程序将只在linux平台上运行。所以我只担心它能否在linux上运行。在向世界发布时,拥有简单、干净的makefiles同样值得。相信我,一个手工编写的简单Makefile比那些autogen的要好16.18亿倍——你根本不知道它们在做什么,定制它们可能需要花费数小时阅读文档。GCC不是一个复杂的程序,编写自己的命令行;简单地说“.o”文件依赖于“.cpp”或“.c”文件就足以让Make-to-know调用gcc,而且更便于移植。