make não sabe como fazer CXXFLAGS. Pare

2

Sou muito novo no FreeBSD e na compilação de código a partir do código-fonte e realmente aprecio qualquer ajuda. Eu estou tentando compilar fastText da fonte. Quando executo o comando make, ele retorna a seguinte mensagem:

make don't know how to make CXXFLAGS. Stop

Aqui estão as primeiras linhas do Makefile (o arquivo completo está disponível no repositório do github do fastText mencionado acima):

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

Versão do FreeBSD: 10.3
Versão do FreeBSD clang: 3.4.1
versão gmake: 4.1_2

    
por Imran Ali 22.08.2016 / 10:15

1 resposta

4

Seu problema é linhas como esta:

opt: CXXFLAGS += -O3 -funroll-loops

Embora o BSD make honre algumas += operações, esse é geralmente um recurso GNU make . No FreeBSD, o GNU make é (quase sempre) instalado como uma porta e seu nome é gmake .

Você pode ver isso na linha de comando usando

make --version

que imprime

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

(não make do GNU) versus

gmake --version

que imprime

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

A maioria dos makefiles são escritos para que a execução de um ou outro desses sabores dependa da variável MAKE sendo definida e (por exemplo) ao chamar makefiles sucessivos, ele "funcionará". Então você pode fazer apenas

gmake

e o resto dos detalhes são feitos automaticamente.

    
por 22.08.2016 / 10:47

Tags