c++11 - 如何使用 premake 指定 C++11 编译?
问题描述
我尝试使用“ C++11 ”premake
标志,让 GNU C++ 编译器进行 C++11 编译。
但是,此标志无法识别,我收到消息“无效标志”。
我在premake
lua 脚本中使用的语句如下,在项目或配置级别:
flags {"C++11"}
我premake4
在 Windows 10 上通过MSYS
. g++ 版本为 4.8.1,支持 C++11。(当我make
直接使用时,我将 c++11 标志作为编译选项传递给编译器,它可以工作。)
如何继续使用 C++11 编译premake
?
解决方案
好吧,我已经尝试了一些事情并且我有一个解决方案。有用。
1)首先, with premake4
,该flags {"C++11"}
语句似乎不起作用。我的意思是,在 上premake4
,C++11
标志无法识别。请注意,flags
语句本身在 flag 上有效,premake4
但(显然)不是C++11
flag 。
2) On premake5
,flags
声明本身已被弃用。所以你不能使用flags {"C++11"}
on premake5
。相反,请使用该cppdialect "C++11"
语句。我在街区内使用它configuration
。
3) 现在,您可以发出语句来创建makefiles
using premake5
。例如:
premake5 --file=premake-lua-scriptname.lua gmake
4) 稍后,当您运行生成的 时,您会在包含 premake5 lua 脚本的目录makefiles
下的子目录中找到默认创建的二进制文件。bin
接受我的建议并覆盖此默认值,使其在与 lua 脚本相同的目录中创建。(我将在下面解释原因。)您可以使用该targetdir
函数覆盖此默认值,该函数可以在项目级别发出。例如:
targetdir "."
5) 请注意,当前 (alpha12) 版本premake5
不支持该clean
操作。要调用该clean
操作,您必须使用premake4
. 这就是为什么我建议在默认目录中创建二进制文件的原因。premake4
然后默认清理它。
这一切都有效。但是,有没有更好的解决方案?
推荐阅读
- php - 获取不到图片的真实姓名getClientOrginalName()
- python - 我可以使用 mlflow python API 注册 spark UDF 并在 Spark scala 代码中使用 UDF 吗?
- arrays - 选择 JSON 数组的列并将元素显示为新列
- docker - 从 Docker 运行时 Grafana 配置卷映射不起作用
- html - 引导汉堡菜单与移动视图上的导航项目折叠
- sql - 在 PostgreSQL 中使用 't' 'f' 表示更新布尔列
- ios - Audiokit 4.9.5 在 xcode 11.4 + swift 5.2 中崩溃,没有有用的错误消息
- laravel - 无法复制具有唯一 slug 字段的模型
- asp.net-core - 如何使 MS Identity SPA 示例适用于组织和个人帐户
- javascript - 如何将变量从 Extjs 发送到 HTML