make 不知道如何制作CXXFLAGS。停止

make 不知道如何制作CXXFLAGS。停止

我对 FreeBSD 和从源代码编译代码都很陌生,非常感谢任何帮助。我正在尝试编译快速文本从源头。当我执行 make 命令时,它返回以下消息:

make don't know how to make CXXFLAGS. Stop

以下是 Makefile 的前几行(完整文件可在上面提到的 fastText github 存储库中找到):

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
FreeBSD clang 版本:3.4.1
gmake 版本:4.1_2

答案1

你的问题是这样的:

opt: CXXFLAGS += -O3 -funroll-loops

虽然 BSDmake荣誉一些 +=操作,这通常是 GNUmake功能。在 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 制作)。

大多数 makefile 的编写都是为了运行这些风格中的一种或另一种将依赖于MAKE所设置的变量,并且(例如)当调用连续的 makefile 时,它​​将“正常工作”。所以你通常可以这样做

gmake

其余的细节都是自动完成的。

相关内容