[英]Makefile, modify command based on the OS
看完这个问题,我写了一个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 上编译而不是在 Mac 上编译时才需要传递-fopenmp
标志。
我的问题是这不起作用,并且标志永远不会通过。
gmake
的语法对空格非常敏感(尤其是gmake
宏)。 此外, uname
的 output 不包含引号。
这应该是:
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.