在決定構建什麼以及如何構建它之前,我們需要確定GNU的AS(GAS)版本。一些較老的GAS,像CentOS 5和OpenBSD 6分發的GAS一樣,無法處理SSE4及更高版本。我們需要禁用利用SSE4,AES-NI,SHA,AVX和BMI的代碼路徑。確定CMake中的彙編程序版本?
我們的主要構建系統是GNU Make和它performs the following:
HAVE_GAS := $(shell $(CXX) -xc -c /dev/null -Wa,-v -o/dev/null 2>&1 | $(EGREP) -c "GNU assembler")
ifneq ($(HAVE_GAS),0)
GAS210_OR_LATER := $(shell $(CXX) -xc -c /dev/null -Wa,-v -o/dev/null 2>&1 | $(EGREP) -c "GNU assembler version (2\.[1-9][0-9]|[3-9])")
GAS217_OR_LATER := $(shell $(CXX) -xc -c /dev/null -Wa,-v -o/dev/null 2>&1 | $(EGREP) -c "GNU assembler version (2\.1[7-9]|2\.[2-9]|[3-9])")
GAS219_OR_LATER := $(shell $(CXX) -xc -c /dev/null -Wa,-v -o/dev/null 2>&1 | $(EGREP) -c "GNU assembler version (2\.19|2\.[2-9]|[3-9])")
endif
據向CMake的Assembler wiki,CMake的有彙編源文件的基本支持。但是它沒有討論如何獲得彙編器的版本。
我們如何確定使用CMake時的彙編版本?
也許設置一個變量,以外殼命令(例如)'彙編--version'的結果。 [有用的鏈接](https://cmake.org/cmake/help/v2.8.9/cmake.html#command:execute_process)。 – Jerfov2