EmacsでCのソースファイルを編集しているときにM-x compileすると通常はmake -kを実行するが、このときのディレクトリはそのソースファイルのあるディレクトリになる。しかし、ある程度の規模のプロジェクトになるとモジュール毎にサブディレクトリを作ったりするため、ソースファイルのあるディレクトリにMakefileがないことがある。例えばこんな感じのソースツリーの場合。
/ +- Makefile +- module1/ | +- foo1.c | +- foo2.c +- module2/ +- bar1.c +- bar2.c
foo1.cを編集しているときは一つ上のディレクトリでmakeしなければならない。こんなときはM-x compileで実行されるコマンド(compile-command)を"make -C .."などとすればよいが、ファイル毎にいちいち設定するのは面倒だ。できれば自動的に設定させたいところだが、Cファイルからビルドのコマンドを知る一般的な方法は多分ないだろう。
すべてのディレクトリで"make"でビルドできるよう各ディレクトリにMakefileを置く、という手もある。しかし世の中のプロジェクトがそうなっているかというとそうでもないような気がする。Emacs使いの人たちはどうしてるんだろう?