Makefile, изменить команду на основе ОС - PullRequest
2 голосов
/ 19 апреля 2020

Прочитав этот вопрос, я написал Makefile, который начинается с

CXX=g++
CXXFLAGS= -std=c++17  -Wall -O3 -g

ifeq ( $( shell uname ), "Linux" )
CXXFLAGS += -fopenmp
endif


LIBS= -pthread
INCLUDES = -I.
TARGETS= my targets...

Мне нужно пропустить флаг -fopenmp, только если я компилирую на linux и не когда я компилирую на Ma c.

Моя проблема в том, что это не работает, и флаг никогда не проходит.

1 Ответ

2 голосов
/ 19 апреля 2020
Синтаксис

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
...