In Unix, can I run 'make' in a directory without cd'ing to that directory first?

后端 未结 5 1109
后悔当初
后悔当初 2021-01-29 18:42

In Unix, can I run make in a directory without cd\'ing to that directory first?

相关标签:
5条回答
  • 2021-01-29 19:03

    If the reason you don't want to cd to a directory is because you need to stay in the current directory for a later task, you can use pushd and popd:

    pushd ProjectDir ; make ; popd
    

    That goes into the ProjectDir, runs make, and goes back to where you were.

    0 讨论(0)
  • 2021-01-29 19:08

    Also you may use:

    make --directory /path/to/dir
    
    0 讨论(0)
  • 2021-01-29 19:15

    make -C /path/to/dir

    0 讨论(0)
  • 2021-01-29 19:18

    As noted in other answers, make(1) has a -C option for this; several commands have similar options (e.g. tar). It is useful to note that for other commands which lack such options the following can be used:

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

    This runs the command in a sub-shell which first has its working directory changed (while leaving the working directory of the parent shell alone). Here && is used instead of ; to catch error cases where the directory can not be changed.

    0 讨论(0)
  • 2021-01-29 19:19

    makefile:

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

    or

    run:
        ./../build/test
    

    etc.

    0 讨论(0)
提交回复
热议问题