1

これがmakefileです:

CC=g++
CC_FLAGS=-Wall -march=native -ffast-math -O3
CC_SOURCES=AbsNode.cpp rle16.cpp
CC_OBJECTS=AbsNode.o rle16.o

# Link command:
test : $(CC_OBJECTS)
    $(CC) $(CC_OBJECTS) -o test

# Compilation commands: 
%.o:%.cpp
    $(CC) -c $(CC_FLAGS) $(input) -o $(output)

このmakefileにmakeを適用すると、次の出力が得られます。

g++ -c -Wall -march=native -ffast-math -O3  -o
g++: arguemnt to '-o' missing

なぜ入力と出力が無視されるのですか?

4

2 に答える 2

4

input変数をoutputどこにも定義していません。コンピューターは、あなたの意図を推測できる魔法の箱ではありません。

于 2013-01-24T22:38:39.353 に答える
3

あなたの .cpp -> .o 暗黙のルールは正しくありません:

%.o: %.cpp
        $(CC) -c $(CC_FLAGS) $< -o $@
  • $<makeによってソース ファイルに設定されます
  • $@出力ファイル名になります
于 2013-01-24T22:40:12.957 に答える