项目文件夹结构:也是makefile的源代码?

时间:2010-12-29 16:41:20

标签: version-control makefile

我有一个相当异构的大型项目 - 涉及不同的语言和编译器,在GNU make的帮助下完全构建了一个版本。

项目文件夹结构包括:

project
   src
      haxe          --Haxe source code
      graphics      --Embeddable graphic resources
      locale        --Locale-specific resources
         chinese    --Chinese language resources
         english    --Generic English resources
   build
      china         --Chinese market
         debug      --Debugging/Testing for developer(s)
         release    --Release
      europe        --European market
         debug      -- ...
         release    -- ...

所有构建都是通过设置和运行'make'生成的。我不能决定的是这些makefile是否也应放在'src'目录中?我通常认为我手工编写的原始材料是源代码(因为我的思路是源于我而不是来自其他任何输入的任何程序。)我会手工编写我的makefile。我考虑这个的另一个原因是因为ONLY'src'目录是一个Git存储库 - 我真的不需要版本跟踪其他任何东西。我是否将所有Makefile放入'src'?

2 个答案:

答案 0 :(得分:2)

目前build目录结构中有什么内容?那是编译后的输出吗?

直观地(我可能来自一个非常不同的开发世界,所以“直觉上”是一个相对术语)当我看到一个build文件夹邻接src文件夹时,我希望程序的源代码在后者和脚本/工具/等。需要将它构建为前者。脚本(在这种情况下为makefile,虽然可能还包括其他内容)本身就是源代码,正如您所说,但不是程序的源代码。区别在于一个是“正在构建的”,另一个是“如何构建它。”

如果我理解正确,src是你的源代码控制绑定的,build不是?在这种情况下,我可能会在build下创建一个builder(或buildingsrc或类似的东西)来存放脚本。它可能有点不直观,它必须在产生输出之前爬上另一个文件夹,但它应该与你已经拥有的资源文件夹很好地坐在一起。

答案 1 :(得分:1)

标准做法是在src /目录之外创建一个Makefile,它构建你的项目,在那个src /目录中,另一个Makefile构建单独的模块。也就是说,我认为在你的情况下,只需将你的Makefile保存在src /中即可。我不确定这是否适用,但你可能想看看GNU autoconf包,它用于这种类型的东西。