4 ms·
"Unfortunately, getting clang to compile MSVC based projects isn't as easy as just dropping in clang and changing a few flags. Let's get started." Errr, use cl
by DannyBee 9y ago
"Unfortunately, getting clang to compile MSVC based projects isn't as easy as just dropping in clang and changing a few flags. Let's get started."
Errr, use clang-cl, and "yes it is". That's the whole point of clang-cl :)
- chris_wot 9y agoWhat are the advantages of using clang-cl over the Microsoft c++ compiler?
- jftuga 9y agoYou can add features or fix bugs since it is open source. It might be easier for cross-platform code.
- martell 9y agoBy using clang-cl you are getting the advantage of the LLVM backend. LLVM/Clang can target many different platforms besides windows and it is open source so it is sponsored by many large companies including Google Apple etc. Google use it for Chrome for example (which includes windows) and have engineers working full time to meet their needs. Intel, ARM, AMD and co have upstreamed many optimisations into LLVM also. If you have a bug it probably will be resolved faster. Instead of waiting months for the next Visual Studio Release etc In general, LLVM because of the intermediate bytecode language and well made libraries like libclang enables new kind of tooling. Microsoft actually use LLVM themselves in many places and have a bunch of open source projects that use it, which is great The would actually probably be better off retiring MSVC's c++ compiler and focus on clang along with everyone else because other companies are basically paying for the engineering for their platform with clang. Unlike gcc the license for llvm/clang is more liberal so if they want private internal tooling they can still do that also.
- chii 9y ago> Unlike gcc the license for llvm/clang is more liberal so if they want private internal tooling they can still do that also. How can that be true? The definition of private internal tooling is that it's not publically distributed, and therefore, GPL isn't a concern. Unless you distribute the result of your modifications to GCC, both clang and GCC are viable bases from which you make your internal tooling.
- marcoperaza 9y agoWanting to distribute something externally does not mean that you want to release it publicly. Lots of "internal" tools are distributed to teams at partner companies and contractors, for example. And more generally, the internal tool of today can become the hit add-on to your existing product of tomorrow, or a new product line. You want to retain flexibility. Legal departments aren't just being paranoid when they insist on avoiding GPL-licensed code if at all possible.
- pjmlp 9y agoWhich is why the *BSDs have a bigger amount of contributions than GPL-licensed operating systems.
- wolfpld 9y ago> both clang and GCC are viable bases from which you make your internal tooling. License is not the only factor determining usability of a compiler wrt interfacing with external tools. GCC was deliberately designed to prevent such usage. See https://www.youtube.com/watch?v=NURiiQatBXA https://www.youtube.com/watch?v=NURiiQatBXA at 2:22 for a direct quote from RMS on this topic.
- johncolanduoni 9y agoAn (unusual) case I've found it useful for is doing LTO across boundaries with other languages whose compilers use LLVM. I've used it to enable inlining of C++ methods called from Rust (the C++ code in question was V8).
- martell 9y agoThis seems super interesting, I am currently looking at building the whole mingw-w64 crt as LTO libs. I wonder if this would be applicable with that in combination with gcc-rs. Disclaimer: I'm also on that rust hype train :)
- deleted 9y ago[deleted]
- Leandros 9y agoUnfortunately, clang-cl only supports a very limited subset of CL's flags. And if you want to talk to clang directly you have to go through an extra layer of indirection by using -Xclang -flag. By using clang directly you get the whole power of clang without arbitrary limitations (and as a bonus you can now compiler your software on mac and linux).