3

あるディレクトリにソース コードがあり、別のディレクトリにメイクファイルがあります。make システムの vpath メカニズムを使用してコードをコンパイルできます。.o ファイルは、makefile と同じフォルダーに作成されています。しかし、これらの .o ファイルを .o という別のディレクトリに移動したいと考えていますobj。私は次のことを試しました:

vpath %.o obj

ただし、それらはメイクファイルと同じフォルダーにまだ作成されています。誰でもこの問題を解決するのを手伝ってもらえますか?

Makefile の強調表示された行を次に示します。

PATH_TO_OBJ:- ../obj
SRC :- .c files
OBJS :- $(SRC:.c = .o)
.c.o = $(CC) $(CFLAGS) -c 
exe: cc $(LFLAGS) -o $(PATH_TO_OBJ) $(SRC).

この後も Makefile と同じフォルダに .o ファイルを作成しています。obj に移動しない

4

2 に答える 2

5

-oオプションは、gcc コンパイラによって生成された出力ファイルを保存する場所を定義します。

gcc main.c -c -o path/to/object/files/main.o
于 2013-07-01T07:15:48.127 に答える
3

Make'sVPATHは、ソース ファイルを検索するためだけのものです。オブジェクトファイルの配置は、それらを構築しているもの次第です。http://mad-scientist.net/make/vpath.htmlに素敵な説明があります(誰かが私を殴ってコメントに投稿したようです)。

*BSD ビルド システムはmake、オブジェクト ファイル (および lex および yacc バリアントからの C ソースを含むその他の生成ファイル) を/usr/obj自動的に配置できる のバリアントを使用します。そのバージョンの にアクセスできる場合はmake、解決しようとしている根本的な問題に対処するための良い方法となるでしょう。

于 2013-07-01T07:17:08.310 に答える