make 没有对 g++ 使用 -std=c++11 选项

ton*_*ark 2 makefile g++ c++11

我正在尝试使用 make 编译 C++ 文件。但是,默认情况下它不使用 -std=c++11 标志。每当我需要编译使用 c++11 特定功能的程序时,我必须使用 g++ 显式编译它。

所以,我想问一下如何让系统上的所有 c++ 文件自动使用选项 -std=c++11 。

如果我需要为 g++ 更改一些全局生成文件,Linux Mint 18 上生成文件的位置是什么,需要更改或添加什么?

或者我需要为自己创建一个 Makefile 吗?

编辑 1:我调用 make like

make myfile
Run Code Online (Sandbox Code Playgroud)

并且目录中只有 .cpp 文件及其二进制文件。我在目录中没有任何 Makefile。

编辑 2:这里myfile是我要编译的 C++ 文件的名称。

当我使用 -d 选项运行 make 时,我得到以下输出(我无法粘贴所有输出,因为它很长并且超出了主体尺寸限制,因此,我包含了输出的屏幕截图)。 Image 1
而这个 image(2) 从末尾开始有一些线条。
图 2

我故意对文件进行了更改,"MagicalWord.cpp"以便 make 找到要制作的东西!

Mad*_*ist 5

没有“全局 makefile”,也没有办法更改所有 make 调用的默认标志(除非您将源代码编辑为 GNU make 并自己编译,在这种情况下这是一个坏主意)。

在您的 makefile(s) 中,添加以下行:

CXXFLAGS += -std=c++11
Run Code Online (Sandbox Code Playgroud)

假设您使用内置规则进行编译,或者您使用标准变量和您自己的规则,这将满足您的需求。

如果这不起作用,我们将需要查看您的 makefile 或至少您用于构建 C++ 源文件的规则(诸如-d输出之类的东西在这里没有用——如果没有构建文件,那将会很有趣,您认为应该是或类似的)。