-
-
Notifications
You must be signed in to change notification settings - Fork 786
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add ability to detect compiler language standards as features #1715
Comments
加上了 xmake/tests/apis/check_xxx/xmake.lua Lines 26 to 34 in 2c906bc
cuda 的我没环境,并且不同平台根据 ccbin 探测方式不同,懒得弄了,先这样吧。。 或者可以参考 提个pr过来,加到 https://github.com/xmake-io/xmake/tree/dev/xmake/modules/detect/tools/nvcc |
这里对option的编译器探测似乎没有好的途径,只能通过
这种来进行,有点复杂;能否提供一个编译器探测功能?
这样定义可以是宏、函数、结构体、全局变量等都行。这样编译器检测可以用
也很简单 |
是否存在编译器跟 feature 似乎不着边
虽然简单通用,但是 decls 去检测 宏,函数 和类型对用户来讲有歧义,明明叫 decls 却去检测 macros,对于初学者压根想不到 还不如一个api 干一件事情,简单明了,而且目前 check_xxx 已经有专门对 types/funcs 等检测了,就没必要都混到这个接口去。。 直接加个 configvar_check_macros() 专门检测宏定义的就行了。。 检测宏是否定义configvar_check_macros("HAS_GCC", "__GNUC__") 检测宏没有被定义configvar_check_macros("NO_GCC", "__GNUC__", {defined = false}) 检测宏条件configvar_check_macros("HAS_CXX20", "__cplusplus >= 202002L", {languages = "c++20"}) |
你在什么场景下需要该功能?
#1712
cmake的
target_compile_features
支持high level的standard探测和low level的具体feature探测,xmake只支持后者https://cmake.org/cmake/help/latest/prop_gbl/CMAKE_CXX_KNOWN_FEATURES.html
另外cmake还支持cuda的standard探测,这个也可以加上,命名可以为
cuda_cxx_std_14
、cuda_cxx_std_17
这样描述可能的解决方案
discussion里面说用flag探测,但这个并不行,例如msvc没有
-std:c++11
这个flag(最低就是c++14,默认c++17),但探测是否支持c++11应该返回“是”。可以根据编译器版本判断,也可以借助__cplusplus
宏来判断。The text was updated successfully, but these errors were encountered: