我正在尝试使用 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/