1

ソースファイル名をコンパイルしてオブジェクトファイルと実行可能ファイルとして保存できる汎用のメイクファイルを作成したかったのです。元のソース名を使用する両方のファイル。ご協力ありがとうございました。

     exec: \

     compile
     ./helloworld  #I would like to input source outside the make file.




    compile: \

    helloworld.c 

    gcc -Wall helloworld.c -o helloworld #<==

    echo 'compiling'             
    touch compile


#I would like makefile to automatically save both object and exec. 
#as the source file name.
4

2 に答える 2

1

$(MAKECMDGOALS)次のように変数を使用できます。

CFLAGS = -Wall

$(MAKECMDGOALS): $(MAKECMDGOALS).o

次に、次のように Make を呼び出します。

make myfile

Make 3.81 以降を使用している場合、これは次のようになります。

CFLAGS = -Wall

.SECONDARY:  # Prevents intermediate files from being deleted

中間オブジェクト ファイルの保存に関心がない場合は、Makefile も必要ありません。あなたは簡単に行うことができます:

make bar CFLAGS=-Wall
于 2012-04-10T08:18:57.430 に答える
1

Make には、同じ名前のソース ファイルから実行可能ファイルを作成する方法を知っている組み込みの規則があります。したがって、makefile はまったく必要ありません。

$ ls
foobar.c

$ make foobar
cc foobar.c -o foobar

make には、最初に .o をコンパイルせずに .c から実行可能ファイルをビルドするという直接的なルールがあるため、.SECONDARY をいじる必要がないというわけではありません (したがって、中間ファイルはありません)。たとえそうでなかったとしても、ここでは .o ファイルを保持する利点はないので、そうするために余分な努力をする価値はありません (IMO)。

コンパイラやフラグを変更したい場合は、いくつかの変数の割り当てだけで構成されたメイクファイルを作成できます。

$ ls
foobar.c        Makefile

$ cat Makefile
CC = gcc
CFLAGS = -Wall

$ make foobar
gcc -Wall foobar.c -o foobar
于 2012-04-10T13:07:17.757 に答える