制作文件,根据操作系统修改命令



看完这个问题后,我写了一个以开头的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

最新更新