gpt4 book ai didi

c++11 - 如何使用premake指定C++11编译?

转载 作者:行者123 更新时间:2023-12-05 06:31:40 25 4
gpt4 key购买 nike

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

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

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

flags {"C++11"}

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

如何使用 premake 进行 C++11 编译?

最佳答案

好吧,我已经尝试了一些方法并且找到了解决方案。它有效。

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

2) 在 premake5 上,flags 语句本身已被弃用。所以你不能在 premake5 上使用 flags {"C++11"}。相反,请使用 cppdialect "C++11" 语句。我在 configuration block 中使用了它。

3) 现在,您可以使用 premake5 发出创建 makefiles 的语句。例如:

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

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

targetdir "."

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

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

关于c++11 - 如何使用premake指定C++11编译?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51709762/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com