make не знаю, как сделать CXXFLAGS. Стоп

Я очень новичок и для FreeBSD, и для компиляции кода из исходного кода, и очень ценю любую помощь. Я пытаюсь скомпилировать fastText из источника. Когда я выполняю команду make, она возвращает следующее сообщение:

make don't know how to make CXXFLAGS. Stop 

Вот первые несколько строк из Makefile (полный файл доступен в fastText github repo, упомянутом выше):

 CXX = c++ CXXFLAGS = -pthread -std=c++0x OBJS = args.o dictionary.o matrix.o vector.o model.o utils.o INCLUDES = -I. opt: CXXFLAGS += -O3 -funroll-loops opt: fasttext debug: CXXFLAGS += -g -O0 -fno-inline debug: fasttext 

Версия FreeBSD: 10.3
Версия Clang FreeBSD: 3.4.1
Версия gmake: 4.1_2

Ваша проблема заключается в таких строках:

 opt: CXXFLAGS += -O3 -funroll-loops 

В то время как BSD make почести некоторыми += операциями, это, как правило, функция GNU make . В FreeBSD GNU make (почти всегда) устанавливается как порт , а его имя – gmake .

Вы можете увидеть это в командной строке, используя

 make --version 

который печатает

 usage: make [-BeikNnqrstWwX] [-C directory] [-D variable] [-d flags] [-f makefile] [-I directory] [-J private] [-j max_jobs] [-m directory] [-T file] [-V variable] [variable=value] [target ...] 

(не GNU make) против

 gmake --version 

который печатает

 GNU Make 3.82 Built for amd64-portbld-freebsd10.0 Copyright (C) 2010 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. 

(GNU make).

Большинство make-файлов написаны так, что запуск того или иного из этих вариантов будет полагаться на установленную переменную MAKE и (например) при вызове последовательных make-файлов, она «будет просто работать». Так что вы обычно можете просто сделать

 gmake 

а остальные детали выполняются автоматически.