make未使用-std=c++;11 g+的选项+; 我试图用make编译C++文件。但是,默认情况下,它不使用-std=c++11标志。每当我需要编译一个使用c++11特定功能的程序时,我必须使用g++显式编译它 >,我想问一下,我的系统中的所有C++文件,我如何自动使用选项-STD= C++ 11。

make未使用-std=c++;11 g+的选项+; 我试图用make编译C++文件。但是,默认情况下,它不使用-std=c++11标志。每当我需要编译一个使用c++11特定功能的程序时,我必须使用g++显式编译它 >,我想问一下,我的系统中的所有C++文件,我如何自动使用选项-STD= C++ 11。,c++11,makefile,g++,C++11,Makefile,G++,如果我需要为g++更改一些全局makefile,那么makefile在LinuxMint18上的位置是什么,需要更改或添加什么 还是我需要为自己创建一个Makefile 编辑1:我正在调用make like make myfile 目录中只有.cpp文件及其二进制文件。我在目录中没有任何Makefile < > >强>编辑2:< /Stord>这里, MyFiels>代码>是我要编译的C++文件的名称。< /P> 当我使用-d选项运行make时,我得到以下输出(我不能粘贴所有输出,因为它很长,并

如果我需要为g++更改一些全局makefile,那么makefile在LinuxMint18上的位置是什么,需要更改或添加什么

还是我需要为自己创建一个Makefile

编辑1:我正在调用make like

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

< > >强>编辑2:< /Stord>这里,<代码> MyFiels>代码>是我要编译的C++文件的名称。< /P> 当我使用-d选项运行make时,我得到以下输出(我不能粘贴所有输出,因为它很长,并且超过了主体大小限制,所以我包含了输出的屏幕截图)。
这张图(2)的末尾有一些线条。

我故意在文件
“MagicalWord.cpp”
中做了一个更改,以便make找到要制作的东西

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

在makefile中,添加以下行:

CXXFLAGS += -std=c++11
假设您使用内置规则进行编译,或者使用标准变量和您自己的规则,这将满足您的需要


如果不起作用,我们需要看到你的MaFor文件或者至少你用来构建C++源文件的规则(比如D/Cuff>输出)在这里没有用处——如果文件没有被构建,你认为应该是或类似的话,那将是有趣的。

< p>为所有C++项目设置系统范围的语言并不一定是个好主意。相反,请定义一个
Makefile
,指定您想要的任何编译器选项:

CXXFLAGS := -std=c++11 $(CXXFLAGS)
<> p>在编译C++程序时(假定使用默认GNU make规则),CXFLAG将传递给编译器。 如果Makefile位于当前工作目录中,您现在可以运行
maketarget
,以便将
target.cpp
文件编译为
target
可执行文件。 如果Makefile位于另一个目录中,则必须指定其路径:

make -f path/to/your/Makefile target
如果只想为一次运行添加额外参数,可以在命令行上设置环境变量或make变量:

# environment:
CXXFLAGS='-std=c++11' make target

# make variable:
make target CXXFLAGS='-std=c++11'
其中任何一项都将导致执行
g++-std=c++11 target.cpp-o target
或等效程序

理论上,您可以编辑shell配置文件以导出cxflags='-std=c++11',这将使您运行的所有程序都可以使用该环境变量。实际上,通过环境变量设置编译器选项往往会导致更多的问题,而不是解决问题


在所有这些解决方案中,仅仅编写一个普通的Makefile是迄今为止最简单的方法。这样,所有的构建配置都在一个地方,并且完全自动化。

您如何调用make命令,以及运行make的目录的内容是什么?什么是myfile?如果您使用
-d
选项运行make,它将打印一行,如
读取makefile。。。打印版本信息后正在读取makefile“makefile”…
。上面写的是哪个文件?更新了相关信息的问题@taskinoor@ShubhamPrasad您需要发布实际的Makefile,这样人们就可以建议在哪里添加-std=c++11标志。没有适合每个平台和makefile的通用方法,这完全取决于您如何编写特定makefile的确切细节