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

标签 c++11 makefile g++

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

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

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

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

编辑 1: 我正在调用 make like

make myfile

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

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

当我使用 -d 选项运行 make 时,我得到以下输出(我无法粘贴所有输出,因为它很长并且超过了正文大小限制,所以我包括了输出的屏幕截图) . Image 1
这张图片 (2) 从结尾开始有一些线条。
Image 2

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

最佳答案

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

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

CXXFLAGS += -std=c++11

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

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

关于c++11 - make 没有为 g++ 使用 -std=c++11 选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41519451/

相关文章:

c++ - 为什么 constexpr 适用于不纯函数

c++ - 我应该使用 QScopedPointer 还是 std::unique_ptr?

c++ - 编译错误(g++ 和 make)

c++ - 将 avx 变量传递给 std::function 时引发 bad_function_call 和段错误

c++ - 如何为小数点分隔符和位数调整 std::stod(字符串加倍)

c++ - 有没有办法在不声明值类型的情况下拥有 std::map

c++ - 为什么我的 Makefile 没有创建我的 .o 文件 C++

c++ - 带有实现和头文件的Makefile

c++ - OpenCV程序中出现"xxx does not named a type"错误

c++ - 通过 Mmap-ed 共享内存传递可变长度的 C 字符串