2
的Makefile
參數gcc
一定Makefile` in an Open-Source project包含以下電話:的Makefile:警告的Emit gcc版本低於4.8.0
CFLAGS = -I$(RM_INCLUDE_DIR) -Wall -g -fPIC -lc -lm -Og -std=gnu99
的-Og
參數被引入到gcc 4.8。我的OSX包含gcc 4.2.1,並且失敗時顯示一個相當混亂的錯誤消息。
問題
有一種優雅和標準(即,適用於任何環境POSIX)的方式來檢查GCC的版本,併發出警告,如果它比4.8更低?
的問題是,gcc --version
具有不同的輸出格式:
$ gcc --version
gcc (Homebrew gcc 5.3.0) 5.3.0
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
$ gcc --version
Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/c++/4.2.1
Apple LLVM version 8.0.0 (clang-800.0.42.1)
Target: x86_64-apple-darwin16.4.0
Thread model: posix
$ gcc --version
gcc (Ubuntu 4.8.4-2ubuntu1~14.04.3) 4.8.4
Copyright (C) 2013 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
我的問題
有一種優雅的,Makefile文件兼容和標準的方法來檢查的gcc版本,並放出如果警告該版本低於4.8.x?
確實[這個問題](http://stackoverflow.com/questions/5188267/checking-the-gcc-version-in-a-makefile)幫助你嗎?那夠優雅嗎? – sycko
只需注意一點,更現代的MacOS版本根本不提供GCC。相反,他們提供了一個'gcc'程序,它實際上只是一個鏈接/包裝'clang'。這就是爲什麼輸出看起來如此不同:即使您鍵入的命令是「gcc」,系統也會運行一個完全不同的編譯器。您將無法使用GCC版本號來比較Clang/LLVM版本。之前版本的GCC附帶的舊版MacOS的原因是Apple在新的GPLv3下沒有任何與軟件有關的功能,因此他們被舊版本的GNU軟件所困住。 – MadScientist