繁体   English   中英

Makefile,根据操作系统修改命令

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM