首页 > 解决方案 > 如何使用 premake 指定 C++11 编译?

问题描述

我尝试使用“ C++11premake标志,让 GNU C++ 编译器进行 C++11 编译。

但是,此标志无法识别,我收到消息“无效标志”。

我在premakelua 脚本中使用的语句如下,在项目或配置级别:

flags {"C++11"}

premake4在 Windows 10 上通过MSYS. g++ 版本为 4.8.1,支持 C++11。(当我make直接使用时,我将 c++11 标志作为编译选项传递给编译器,它可以工作。)

如何继续使用 C++11 编译premake

标签: c++11premake

解决方案


好吧,我已经尝试了一些事情并且我有一个解决方案。有用。

1)首先, with premake4,该flags {"C++11"}语句似乎不起作用。我的意思是,在 上premake4C++11标志无法识别。请注意,flags语句本身在 flag 上有效,premake4但(显然)不是C++11flag 。

2) On premake5flags声明本身已被弃用。所以你不能使用flags {"C++11"}on premake5。相反,请使用该cppdialect "C++11"语句。我在街区内使用它configuration

3) 现在,您可以发出语句来创建makefilesusing premake5。例如:

premake5 --file=premake-lua-scriptname.lua gmake

4) 稍后,当您运行生成的 时,您会在包含 premake5 lua 脚本的目录makefiles下的子目录中找到默认创建的二进制文件。bin接受我的建议并覆盖此默认值,使其在与 lua 脚本相同的目录中创建。(我将在下面解释原因。)您可以使用该targetdir函数覆盖此默认值,该函数可以在项目级别发出。例如:

targetdir "."

5) 请注意,当前 (alpha12) 版本premake5不支持该clean操作。要调用该clean操作,您必须使用premake4. 这就是为什么我建议在默认目录中创建二进制文件的原因。premake4然后默认清理它。

这一切都有效。但是,有没有更好的解决方案?


推荐阅读