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

如果使用的编译器不是gcc而是llvm,yadcc是否支持呢?应该如何整合构建系统? #34

Open
liyunwang opened this issue Sep 29, 2022 · 4 comments

Comments

@liyunwang
Copy link

No description provided.

@0x804d8000
Copy link
Collaborator

二者的支持方式是类似的(本地预处理+远程编译),涉及到的命令行参数也基本一致(不过llvm额外支持了一个-frewrite-includes,可以进一步优化本地性能)。但是没有专门测试过llvm的兼容性。

可以测试一下直接套在llvm上面,如果有不兼容也可以贴上来看看(参考 https://github.com/Tencent/yadcc/blob/master/yadcc/doc/debugging.md#客户端 获得调试信息),比较简单的case的话也可以直接发mr

@aguludunu
Copy link

clang不支持-fdirectives-only和-fpreprocessed(clang-15已经支持-fdirectives-only)
在本地使用-frewrite-includes用clang进行预处理后,云端还是不能编译(因为clang不支持-fpreprocessed),使用"-x c++-cpp-output"也不行,返回的编译结果大小为0

@wlii-by
Copy link

wlii-by commented Mar 21, 2023

我也遇到了-fdirectives-only和-fpreprocessed问题,所以是yadcc不支持clang?

@0x804d8000
Copy link
Collaborator

看起来应该是不支持,我们目前没有在生产环境中尝试过分布式的clang编译。

-fdirectives-only并不是必须的,单纯的-E也可以,但是性能会差一些。

初步(而且可能并不完善)的测试了一下,本地预处理+远程编译对于clang来说也是可以的,但是可能在yadcc的client(主要是RewriteFile)和daemon(粗看感觉可能不用改)部分需要少量适配。

e.g.

$ cat > 1.cc
#include <iostream>

int main() {
  std::cout << "Hello world." << std::endl;
}
$ clang++ -E ./1.cc -o 1.ii
$ clang++ -c 1.ii -o 1.o
$ clang++ 1.o
$ ./a.out
Hello world.
$

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

No branches or pull requests

4 participants