看完这个问题后,我写了一个以开头的Makefile
CXX=g++
CXXFLAGS= -std=c++17 -Wall -O3 -g
ifeq ( $( shell uname ), "Linux" )
CXXFLAGS += -fopenmp
endif
LIBS= -pthread
INCLUDES = -I.
TARGETS= my targets...
只有当我在linux上编译时,我才需要传递-fopenmp
标志,而不是在Mac上编译时。
我的问题是,这不起作用,旗帜永远不会通过。
gmake
的语法对空白非常敏感(尤其是gmake
宏(。此外,uname
的输出不包括引号。
这应该是:
CXX=g++
CXXFLAGS= -std=c++17 -Wall -O3 -g
ifeq ($(shell uname),Linux)
CXXFLAGS += -fopenmp
endif
zz:
echo $(CXXFLAGS)
结果:
$ make zz
echo -std=c++17 -Wall -O3 -g -fopenmp
-std=c++17 -Wall -O3 -g -fopenmp