代码之家  ›  专栏  ›  技术社区  ›  user46795

在Unix中,我是否可以在一个目录中运行“make”,而不首先将cd刻录到该目录?

  •  180
  • user46795  · 技术社区  · 17 年前

    make cd

    5 回复  |  直到 6 年前
        1
  •  378
  •   Svante    17 年前

    make -C /path/to/dir

        2
  •  104
  •   Dave C    17 年前

    如其他答案所述,make(1)具有 -C 这方面的选择;有几个命令具有类似的选项(例如tar)。请注意,对于缺少此类选项的其他命令,可以使用以下命令:

    (cd /dir/path && command-to-run)
    

    这将在一个子shell中运行该命令,该子shell首先更改了其工作目录(同时保留父shell的工作目录)。在这里 && ; 捕获无法更改目录的错误情况。

        3
  •  23
  •   Robert Siemer    11 年前

    如果您不想将cd刻录到某个目录的原因是您需要在当前目录中等待以后的任务,则可以使用pushd和popd:

    pushd ProjectDir ; make ; popd
    

    这会进入ProjectDir,运行make,然后返回到您所在的位置。

        4
  •  11
  •   korst1k    10 年前

    make --directory /path/to/dir
    
        5
  •  -4
  •   oldpilsbury    8 年前

    all:
        gcc -Wall -Wpedantic -std=gnu99 -g src/test.c -o build/test
    
    run:
        ./build/test
    

    或

    run:
        ./../build/test