Skip to content
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

项目开启 ccache 之后无法通过编译 #2445

Closed
BenzzzX opened this issue Jun 9, 2022 · 10 comments
Closed

项目开启 ccache 之后无法通过编译 #2445

BenzzzX opened this issue Jun 9, 2022 · 10 comments
Labels

Comments

@BenzzzX
Copy link

BenzzzX commented Jun 9, 2022

Xmake 版本

2.6.7

操作系统版本和架构

Windows 10 21H2 x86_64 toolchain vs2022 17.2.1

描述问题

xmake 2.6.4 可以通过编译,xmake 2.6.7 开启 ccache 之后产生编译错误。

期待的结果

和开启ccache之前一样正确通过编译

工程配置

项目地址:https://github.com/SakuraEngine/Sakura.Runtime

附加信息和错误日志

log.txt

@BenzzzX BenzzzX added the bug label Jun 9, 2022
@waruqi
Copy link
Member

waruqi commented Jun 9, 2022

xmake -vD -j1 单任务编译,然后提供下出错的那个 cpp 的预处理文件。。

@BenzzzX
Copy link
Author

BenzzzX commented Jun 9, 2022

log.txt
cooker.generated.cpp.txt

文件有点大

@waruqi
Copy link
Member

waruqi commented Jun 10, 2022

  base_type::push_back(valF�:�\�S�a�k�u�r�a�.�R�u�n�t�i�m�e�\�i�n�c�l�u�d�e�\�u�t�i�l�s�\�t�e�.�h�p�p�(�9�)�:� �w�a�r�n�i�n�g� �C�4�0�6�7�:� �??�Y�thV�c?N�T	g�a�Y�h?? �-� �?^??eQbcL?&{

image

/P 预处理生成的 预处理文件里面,有无效编码字符。。为啥会连 warning 信息也给带进去了,有点怪。。具体还得再调下。。

@waruqi
Copy link
Member

waruqi commented Jun 10, 2022

似乎预处理过程中,里面会自动输出一些 C4067 的 warning 信息,到预处理文件里面,干扰了正常的编译。。

https://docs.microsoft.com/en-us/cpp/error-messages/compiler-warnings/compiler-warning-level-1-c4067?view=msvc-170

@BenzzzX
Copy link
Author

BenzzzX commented Jun 10, 2022

怎么warning的编码还是烂的。。。我系统全局开启了utf8设置

@waruqi
Copy link
Member

waruqi commented Jun 10, 2022

关键是,即使编码对了,也是编译不过的,这个 warning line 。。随机插入在代码里面,会导致编译语法错误。。为啥 /P /Fixxx.cpp 生成的预处理文件,里面会插 warning 。。也是诡异

@waruqi
Copy link
Member

waruqi commented Jun 12, 2022

更新到 dev 试下 应该可以了 xmake update -s dev

@BenzzzX
Copy link
Author

BenzzzX commented Jun 13, 2022

测试了一下,可以了

@waruqi waruqi closed this as completed Jun 13, 2022
@BenzzzX
Copy link
Author

BenzzzX commented Jun 16, 2022

。。。在release编译下又出现问题了,原代码

#pragma comment(linker,                                                                                                                                        \
                QUICKCPPLIB_SIGNAL_GUARD_SYMBOL("/alternatename:?RaiseException@win32@detail@signal_guard@_", "@quickcpplib@@YAXKKKPEB_K@Z=RaiseException"))
#pragma comment(linker, QUICKCPPLIB_SIGNAL_GUARD_SYMBOL("/alternatename:?SetUnhandledExceptionFilter@win32@detail@signal_guard@_",                             \
                                                        "@quickcpplib@@YAP6AJPEAU_EXCEPTION_POINTERS@12345@@ZP6AJ0@Z@Z=SetUnhandledExceptionFilter"))
#pragma comment(linker, QUICKCPPLIB_SIGNAL_GUARD_SYMBOL("/alternatename:?AddVectoredContinueHandler@win32@detail@signal_guard@_",                              \
                                                        "@quickcpplib@@YAPEAXKP6AJPEAU_EXCEPTION_POINTERS@12345@@Z@Z=AddVectoredContinueHandler"))
#pragma comment(linker, QUICKCPPLIB_SIGNAL_GUARD_SYMBOL("/alternatename:?RemoveVectoredContinueHandler@win32@detail@signal_guard@_",                           \
                                                        "@quickcpplib@@YAKPEAX@Z=RemoveVectoredContinueHandler"))

在.cpp.cpp中被处理成了

#pragma comment(linker,                                                                                                                                        \
                "/alternatename:?RaiseException@win32@detail@signal_guard@_" "560ac657" "@quickcpplib@@YAXKKKPEB_K@Z=RaiseException")
#pragma comment(linker, 
"/alternatename:?SetUnhandledExceptionFilter@win32@detail@signal_guard@_" "560ac657" "@quickcpplib@@YAP6AJPEAU_EXCEPTION_POINTERS@12345@@ZP6AJ0@Z@Z=SetUnhandledExceptionFilter")
#pragma comment(linker, 
"/alternatename:?AddVectoredContinueHandler@win32@detail@signal_guard@_" "560ac657" "@quickcpplib@@YAPEAXKP6AJPEAU_EXCEPTION_POINTERS@12345@@Z@Z=AddVectoredContinueHandler")
#pragma comment(linker, 
"/alternatename:?RemoveVectoredContinueHandler@win32@detail@signal_guard@_" "560ac657" "@quickcpplib@@YAKPEAX@Z=RemoveVectoredContinueHandler")

#pragma 语句换行了却没有在行尾添加 '\' ,导致编译不过

@waruqi
Copy link
Member

waruqi commented Jun 16, 2022

#2413 类似的问题 但又不完全相似,msvc 的预处理坑有点多

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants