-
-
Notifications
You must be signed in to change notification settings - Fork 812
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
在generating.module.deps时缺少c++标准的设置 #3873
Comments
Title: Lack of C++ standard settings when generating.module.deps |
不能加,故意删掉的,通过
相关代码和注释:
xmake/xmake/rules/c++/modules/modules_support/clang.lua Lines 331 to 334 in 649faaf
除非使用最新版本的 clang 并且带有 clang-scan-deps,让 xmake 尝试用 clang-scan-deps 去生成模块依赖图,就没有这个问题,如果没 clang-scan-deps, xmake 会 fallback 到内置的模块依赖图实现,走的 clang -E 预编译,有限制。 然而 clang 的 clang-scan-deps 目前对 c++modules 支持不是很好,headerunit 什么的 也没很好支持。。所以你可以尝试,也可以耐心等待 clang 后续版本对 c++modules 的改进。 |
我用的clang17是有clang-scan-deps.exe的,不过xmake并没有去调用。这里需要加什么设置么? |
The clang17 I used has clang-scan-deps.exe, but xmake did not call it. Do I need to add any settings here? |
你调下这里,看下为啥没进去。。
|
You tune down here and see why you didn't go in. .
|
我用clang并没有出问题。
这个可以正常编译,而且我当中也使用了其他模块
clang是最新的开发版
|
看起来探测的路径错了
这个clang-scan-deps在D:/clang/bin下,.\这个路径应该不对。 |
再试试,xmake update -s dev |
Try again, xmake update -s dev |
我暂时没这个版本 clang 16 我这不行 |
|
clang-scan-deps is called correctly after |
我发现了预编译头和模块混用时有一个顺序问题
这里先进行了generating,后编译了预编译头。若预编译头不存在则编译失败。 还有一个问题,传递给clang-scan-deps的参数漏了预编译头 -- MyDetail/xmake.lua
target("MyDetail")
set_kind("object")
set_pcxxheader("BasicDefinitions.hpp", {public = true})
add_files("*.ixx")
target_end()
-- Test/xmake.lua
target("Test")
set_kind("binary")
add_files("src/test.cpp")
add_deps("MyDetail")
target_end() 构建时出现如下错误
实际上-include-pch后面应该加上 |
目前模块不支持预编译头,另外都走模块了,再用预编译也没啥意义,提升不大,问题更多,原本模块各家编译器都支持还不完整。 |
At present, the module does not support precompiled headers. In addition, it is a module. It is meaningless to use precompiled. The improvement is not big, and there are more problems. |
这不是还没支持import头文件;的语法嘛,暂且只能用用预编译头了,不然还是每个模块预处理一次头文件。而且如果需要用到宏的话还是只能预编译头,保留还是有一定作用的。 |
Isn't it that the syntax of import header files is not yet supported? For the time being, only precompiled headers can be used, otherwise each module should preprocess the header files once. And if you need to use macros, you can only precompile the header, and reservation still has a certain effect. |
headerunit ?。。我记得 gcc/clang/msvc 都支持了才对。。 $ xmake f --toolchain=llvm --sdk=~/projects/working/qvmfix/llvm/llvm-
roject/llvm/build -c
checking for platform ... macosx
checking for architecture ... x86_64
checking for Xcode directory ... /Applications/Xcode.app
checking for SDK version of Xcode for macosx (x86_64) ... 13.0
ruki-2:user_headerunit ruki$ xmake -r
[ 0%]: generating.module.deps src/main.cpp
[ 0%]: generating.module.deps src/hello.mpp
[ 11%]: compiling.headerunit.release header.hpp
[ 33%]: compiling.module.release hello
[ 66%]: compiling.release src/main.cpp
[ 77%]: linking.release user_headerunit
[100%]: build ok, spent 0.688s 不过 clang 对 stl headerunit 似乎还没很好支持 |
然而
编译的是xmake\tests\projects\c++\modules\user_headerunit。这么看我是不是还需要设置什么才能正常使用? |
clang 的 clang-scan-deps 对 headerunit 支持不好。。。禁用就行了,我这不用 clang-scan-deps,就能正常编译 |
你说得对,只能等待clang-scan-deps的改进了 |
You are right, can only wait for the improvement of clang-scan-deps |
Xmake 版本
xmake v2.7.9+dev.8b9228762
操作系统版本和架构
Windows 11 22H2
描述问题
在generating.module.deps时没有设置-std=c++23
在编译的时候正确设置了
但如果我在MyUtility.ixx中对c++标准进行检测就会出错
编译时出现
期待的结果
在generating.module.deps时也应该设置c++标准
工程配置
No response
附加信息和错误日志
The text was updated successfully, but these errors were encountered: