Makefileには、.o
と.d
のファイルをコンパイルして生成する行がいくつかあります。私は.o
.d
の二組を生成することにしたい、のようなもの:おそらく私は[email protected]
で再生する必要がありますが、どのよう見当がつかないMakefileとgccを使って.oファイルの名前を変更
name.d
name_hello.d
name.o
name_hello.o
はすでに"$(@:.o=_hello.d)"
を使用して.d
の名前を変更する方法を見つけたが何の成功は、.oの変更なかったですそれをするために。ここで
は、ファイルのコードを作成している:
$(OBJECT_DIRECTORY)/%.o: %.c
# Build header dependencies
$(CC) $(CFLAGS) $(INCLUDEPATHS) -M $< -MF "$(@:.o=.d)" -MT [email protected]
$(CC) $(CFLAGS) $(INCLUDEPATHS) -M $< -MF "$(@:.o=_hello.d)" -MT [email protected]
# Do the actual compilation
$(CC) $(CFLAGS) $(INCLUDEPATHS) -c -o [email protected] $<
$(CC) $(CFLAGS) $(INCLUDEPATHS) -c -o [email protected] $< - this line i want to change
私は腕とmake.exe
更新
ためarm-none-eabi-gcc.exe
を使用する別のターゲットを使用して名前を変更するよりも兼ね備えソリューションであると思われます。だから、私はそれのための別の目標をした。しかし、決して使用されません。
C_OBJECTS = $(addprefix $(OBJECT_DIRECTORY)/, $(C_SOURCE_FILENAMES:.c=.o))
を、私は私のような何かにそれを変更する必要があるとします:
C_OBJECTS_hello = $(addprefix $(OBJECT_DIRECTORY)/, $(C_SOURCE_FILENAMES:.c=*_hello.o))
方法教えてくださいメイクファイルの他の場所では、コンパイラ何.o
ファイルを使用するように指示するコードの次の行がありますコンパイラの使用に*_hello.o
ファイル
を作るためにC_OBJECTS
を修正するためのアップデート2
これはC_OBJECTS
の使用方法を、私はC_OBJECTS
におけるフィルタのいくつかの種類がCC
(arm-none-eabi-gcc.exe
)は、特定の.o
ファイルを使用するように指示したとしています。 *_hello.o
のファイルはフィルタで使用されていないため、ターゲットでも生成されません。
## Link C and assembler objects to an .out file
$(OUTPUT_BINARY_DIRECTORY)/$(OUTPUT_FILENAME).out: $(BUILD_DIRECTORIES) $(C_OBJECTS) $(ASSEMBLER_OBJECTS) $(LIBRARIES)
$(CC) $(LDFLAGS) $(C_OBJECTS) $(ASSEMBLER_OBJECTS) $(LIBRARIES) -o $(OUTPUT_BINARY_DIRECTORY)/$(OUTPUT_FILENAME).out
まだ答えを見つけることができない私は、これはメイクヘルプに書かれていることを知っていると私はそれを読んでいますが、
アップデート3ここで
i「はC_OBJECTSを修正する方法れます'と表示され、次のように表示されます。
C_OBJECTS_hello = $(addprefix $(OBJECT_DIRECTORY)/, $(C_SOURCE_FILENAMES:.c=_hello.o))
しかし、 '.o'_を変更しても何の変化もありません。 –
私の目的は* .oと* _hello.oファイルの両方を持つことです。 –
http://stackoverflow.com/a/7358961/412080 –