代码之家  ›  专栏  ›  技术社区  ›  Cedric H.

子目录和生成文件

  •  57
  • Cedric H.  · 技术社区  · 16 年前

    我认为这是一个已经被问过很多次的问题,但我找不到 正确的 这样做的方法。

    我有以下结构:

    project/
    project/Makefile
    project/code
    project/code/*.cc
    project/code/Makefile
    

    当我在“project/code”目录中并调用“make project\u code”时,我的代码正在正确编译。

    当我在“project/”中时,我想这样做,只需调用“make project_code”,就好像我在“project/code”中一样。

    makefile“project/makefile”将包含其他规则(如“install”)和一些要编译的规则,就像我在“project/code”中一样。为此,我请求你的帮助…谢谢。

    2 回复  |  直到 12 年前
        1
  •  81
  •   Justin Ardini    16 年前

    最简单的方法是:

    CODE_DIR = code
    
    .PHONY: project_code
    
    project_code:
           $(MAKE) -C $(CODE_DIR)
    

    这个 .PHONY 规则意味着 project_code 不是需要生成的文件,并且 -C 标志表示目录中的更改(相当于正在运行 cd code 打电话之前 make )您可以使用相同的方法调用 code 生成文件。

    例如:

    clean:
           $(MAKE) -C $(CODE_DIR) clean
    
        2
  •  1
  •   Emanuele Cipolla    12 年前

    尝试将此规则放入类似这样的项目/生成文件中(对于GNU生成):

    .PHONY: project_code
    project_code:
           cd code && make