メイクファイルの先頭には次のものがあります。このメークファイルに何が問題なのですか?
USE_44 = 0
ifeq($(USE_44), 0)
CXX = g++
else
CXX = g++44
endif
しかし、私は、私はここで何間違ってエラー
makefile:2: *** missing separator. Stop.
をしていますか?
メイクファイルの先頭には次のものがあります。このメークファイルに何が問題なのですか?
USE_44 = 0
ifeq($(USE_44), 0)
CXX = g++
else
CXX = g++44
endif
しかし、私は、私はここで何間違ってエラー
makefile:2: *** missing separator. Stop.
をしていますか?
GNU makeには、非常に便利な意味がありますが、よく見落とされる機能はcomputed variable namesです。
CXX := g++
cxx_version_ := $(subst ., ,$(shell ${CXX} -dumpversion))
cxx_major_ := $(word 1,${cxx_version_})
cxx_minor_ := $(word 2,${cxx_version_})
cxxflags.4 := -Wno-multichar
cxxflags.4.3 := ${cxxflags.4} -march=native -fdiagnostics-show-option
cxxflags.4.4 := ${cxxflags.4.3} -Werror=return-type -Werror=reorder
cxxflags.4.5 := ${cxxflags.4.4}
CXXFLAGS := ${cxxflags.${cxx_major_}.${cxx_minor_}}
$(info g++ version is ${cxx_major_}.${cxx_minor_})
$(info g++ options are ${CXXFLAGS})
:
USE_44 := 0
cxx.0 := g++
cxx.1 := g++44
CXX := ${cxx.${USE_44}}
は通常、しかし、あなたは利用者からのコンパイラ名とバージョンに応じて設定コンパイラオプションを受け入れるようにしたい:この機能を使用すると、条件文を避け、コードが短く、読みやすくすることができます
出力:ああ、それを得た
$ make
g++ version is 4.5
g++ options are -Wno-multichar -march=native -fdiagnostics-show-option -Werror=return-type -Werror=reorder
make: *** No targets. Stop.
ありがとう!非常に有益! – MetallicPriest
ifeq
の後にスペースが必要です。それが問題を解決しました。
、ifeq後にスペースを入れませんでした。 – MetallicPriest