C++11 如何使用premake指定C++;11汇编? 我尝试使用“ C++ 11 >代码>预制作< /Cord>标志,得到GNU C++编译器进行C++ 11编译。
但是,此标志无法识别,我收到消息“invalid flag” 我在C++11 如何使用premake指定C++;11汇编? 我尝试使用“ C++ 11 >代码>预制作< /Cord>标志,得到GNU C++编译器进行C++ 11编译。,c++11,premake,C++11,Premake,但是,此标志无法识别,我收到消息“invalid flag” 我在premakelua脚本中使用的语句在项目或配置级别如下: flags {"C++11"} 我正在通过MSYS在Windows 10上使用premake4。g++版本是4.8.1,支持C++11。(当我直接使用make时,我将c++11标志作为编译选项传递给编译器,它可以工作。) 如何使用premake获得C++11编译?好吧,我已经尝试了一些方法,我有了一个解决方案。它起作用了 1) 首先,对于premake4,flags{“
premake
lua脚本中使用的语句在项目或配置级别如下:
flags {"C++11"}
我正在通过MSYS
在Windows 10上使用premake4
。g++版本是4.8.1,支持C++11。(当我直接使用make
时,我将c++11标志作为编译选项传递给编译器,它可以工作。)
如何使用
premake
获得C++11编译?好吧,我已经尝试了一些方法,我有了一个解决方案。它起作用了
1) 首先,对于premake4
,flags{“C++11”}
语句似乎不起作用。我的意思是,在premake4
上,C++11
标志无法识别。请注意,flags
语句本身在premake4
上有效,但(显然)不是C++11
标志
2) 在premake5
上,flags
语句本身已被弃用。因此,您不能在premake5
上使用标志{“C++11”}
。相反,请使用cpp方言“C++11”
语句。我在配置
块中使用了它
3) 现在,您可以使用premake5
发出语句来创建makefile
。例如:
premake5 --file=premake-lua-scriptname.lua gmake
4) 稍后,当您运行生成的makefiles
时,您将在默认情况下在包含premake5 lua脚本的dir的bin
子目录下找到创建的二进制文件。接受我的建议并覆盖此默认值,使其与lua脚本在同一目录中创建。(我将在下面解释原因。)您可以使用targetdir
函数覆盖此默认值,该函数可以在项目级别发布。例如:
targetdir "."
5) 请注意,premake5
的当前(alpha12)版本不支持clean
操作。要调用clean
操作,必须使用premake4
。这就是为什么我建议在默认目录中创建二进制文件premake4
然后默认情况下对其进行清理
所有这些都有效。但是,有更好的解决方案吗?对于windows build,您不需要指定任何内容,因为vs版本意味着支持所需的标准,所以
premake5.exe vs2012
或更高版本就足够了
供linux或macOS使用
buildoptions“-std=c++11”
正如@SSteven提到的,premake5-alpha12+使用cpp方言“c++11”
。然而,C++20还不受支持,所以在这个特殊情况下,我不得不使用buildoptions”--std=C++20“
(带有两个连字符)。刚刚意识到-std=C++20
非常好,但是在使用空格--std C++20
时需要两个连字符,我认为最好使用gmake2
,因为Makefile格式将比使用gmake
时更加现代。