inorton / cclash Goto Github PK
View Code? Open in Web Editor NEWccache / clcache inspired compiler cache for cl.exe
ccache / clcache inspired compiler cache for cl.exe
I suspect that some /I options are getting lost if the path given contains a space.
Simple Test Project in use:
https://github.com/relascope/TestingCppClrCs
It seems, that:
Maybe I have misunderstood something:
Does the server has to be started to work correctly?
cclash seems to interpret the /EH option as /E, which is an unsupported option. It looks like the cause is at
Line 298 in 23d8beb
I'd be happy to submit a pull request to fix this, but I notice there hasn't been a release in over a year, so I want to make sure this project is still maintained before I take the time to do that.
CCLASH_TRACKER_MODE=yes
And configure called with -no-pch
Using cmake with a Qt based project also results only in unsupported.
Would be great to be able to use cclash with Qt.
I would love to use cclash
in the osquery
Windows build on our CI build hosts!
We have a lot of tooling right now to provision hosts using choco
, would you mind investigating how much effort it would take to provide a cclash
package?
/FI compiler option isn't a supported compiler option.
Where we use cclash we already have another wrapper that corrects paths from unix "/" to windows "" styles so we've not run into needing this. But I will make a stab at sorting this out.
MSBuild/devenv will call cl with multiple cpp files sometimes and cclash is not supporting this case.
Maybe cclash should split this kind of command into multiple commands for better cache hitting.
When two or more invocations of the linker or cl link using the same files there is a chance that one will fail due to 'file in use' errors.
LNK1181: cannot open input file 'C:/PROGRA2/WINDOW4/8.0//Lib/win8/um/x64/cfgmgr32.lib'
cclash should be able to serialize linking calls
Hi! Is it possible to see stats? Something similar to ccache -s
?
And how to specify folder for cached files?
Environment.SetEnvironmentVariable("CCLASH_DIR", System.IO.Path.Combine(CClashTestsFixtureSetup.InitialDir, CacheFolderName + cachesuffix));
throws because CClashTestsFixtureSetup.InitialDir is null, becuase Init() method never called.
May be I'm cooking it wrong?
Hi,
I've failed to compile cclash.sln because cct\Properties\AssemblyInfo.cs is missing:
2>------ Build started: Project: cct, Configuration: Release Any CPU ------
2>CSC : error CS2001: Source file 'Properties\AssemblyInfo.cs' could not be found```
When you build a single file "source.cpp" with the /FoC:\OBJ_FOLDER\ option it will fail with this error
"Cannot find C:\OBJ_FOLDER.obj file"
It shoud looks for the C:\OBJ_FOLDER\source.obj" file instead.
The /Fd option does not generate a PDB file. It just tells where to store the PDB files if they are generated.
Documentation: http://msdn.microsoft.com/library/1deeycx5.aspx
As I understand, it currently doesn't work due to
if (full.StartsWith("/E"))
{
return NotSupported("/E");
}
in CClash/Compiler.cs
which was added in
Revision: c5ac5d2c6b00cc5a8521a51f3f14ab5a7ba76003
Author: Ian Norton <[email protected]>
Date: 26.10.2013 12:26:32
Message:
add horrible fix for cygwin envs and fixup for quoted -D values
When the VS localization is not English. CLash will not find the include files. Because it looks for the "Note: including file" to identify an include file. But this string is localized.
At the moment installation of cclash is manual. There should be an installer that sets the correct file locations and should offer to "move" the "real" cl.exe
Escaping of "FOOO" is broken.
cl -c -nologo -Zc:wchar_t -W3 -GR -EHsc -w34100 -w34189 -wd4577 -DUNICODE -DQT_NO_CODECS -DQT_NO_TEXTCODEC -DQT_NO_UNICODETABLES -DQT_LITE_COMPONENT -DQT_NO_COMPRESS -DQT_NO_THREAD -DQT_NO_QOBJECT -DQT_NO_GEOM_VARIANT -D_CRT_SECURE_NO_DEPRECATE -DQT_BOOTSTRAPPED -DQT_BUILD_CONFIGURE -DQT_USE_QSTRINGBUILDER -DQT_VERSION_STR=\"5.7.0\" -DQT_VERSION_MAJOR=5 -DQT_VERSION_MINOR=7 -DQT_VERSION_PATCH=0 -I"..\..\include" -I"..\..\include\QtCore" -I"..\..\include\QtCore\5.7.0" -I"..\..\include\QtCore\5.7.0\QtCore" -I"q:\qtbase\tools\shared" -I"q:\qtbase\mkspecs\win32-msvc2012" q:\qtbase\src\corelib\io\qfile.cpp q:\qtbase\src\corelib\io\qfileinfo.cpp q:\qtbase\src\corelib\io\qabstractfileengine.cpp q:\qtbase\src\corelib\io\qfilesystementry.cpp q:\qtbase\src\corelib\io\qfilesystemengine.cpp qglobal.cpp q:\qtbase\src\corelib\global\qglobal.cpp(1024): error C2143: syntax error: missing ';' before 'constant' q:\qtbase\src\corelib\global\qglobal.cpp(1024): error C2440: 'return': cannot convert from 'double' to 'const char *' jom: R:\build\libs\qtbase\work\msvc2015-Debug-5.7\tools\configure\Makefile [qglobal.obj] Error 2 cl -c -nologo -Zc:wchar_t -W3 -GR -EHsc -w34100 -w34189 -wd4577 -DUNICODE -DQT_NO_CODECS -DQT_NO_TEXTCODEC -DQT_NO_UNICODETABLES -DQT_LITE_COMPONENT -DQT_NO_COMPRESS -DQT_NO_THREAD -DQT_NO_QOBJECT -DQT_NO_GEOM_VARIANT -D_CRT_SECURE_NO_DEPRECATE -DQT_BOOTSTRAPPED -DQT_BUILD_CONFIGURE -DQT_USE_QSTRINGBUILDER -DQT_VERSION_STR=\"5.7.0\" -DQT_VERSION_MAJOR=5 -DQT_VERSION_MINOR=7 -DQT_VERSION_PATCH=0 -I"..\..\include" -I"..\..\include\QtCore" -I"..\..\include\QtCore\5.7.0" -I"..\..\include\QtCore\5.7.0\QtCore" -I"q:\qtbase\tools\shared" -I"q:\qtbase\mkspecs\win32-msvc2012" q:\qtbase\src\corelib\io\qfilesystemengine_win.cpp q:\qtbase\src\corelib\io\qfilesystemiterator_win.cpp q:\qtbase\src\corelib\io\qfsfileengine.cpp q:\qtbase\src\corelib\io\qfsfileengine_win.cpp q:\qtbase\src\corelib\io\qfsfileengine_iterator.cpp
The source code at that location is
const char *qVersion() Q_DECL_NOTHROW { return QT_VERSION_STR; }
Using 0.3.17
Gyp's ninja generator will generate command lines like:
$cc /nologo /showIncludes /FC @$out.rsp /c a.cpp /Foa.obj /Fda.pdb
I suggest cclash creating its own new rsp file to store all the arguments to fix these issues.
CL can support argument start with "-" as well as "/", and gyp's ninja generator will use both.
I see a couple errors with "Illegal characters in path". Whatever the path is works fine with msvc, and still still works just fine using cclash (except for the error message), although I presume that no caching is happening -- so I don't think the underlying cl.exe actually cares about these illegal characters.
Example:
[ 29%] Building C object test/driver_stub/CMakeFiles/OpenCLDriverStub.dir/cl.c.obj
System.ArgumentException: Illegal characters in path.
at System.IO.Path.CheckInvalidPathChars(String path, Boolean checkAdditional)
at System.IO.Path.IsPathRooted(String path)
at CClash.Compiler.ProcessArguments(String[] args) in c:\Users\inb\Desktop\cclash\cclash\CClash\Compiler.cs:line 554
Hi,
After i've opened cclash.sln in msvs 2015 it displays error dialog that cct.psess file is missing.
(nevertheless the project is compiled successfully)
I was wondering if CClash works correctly if I have two builds on the same machine building the same files.
I guess the builtin client-server approach should be used for that? If so, can you provide some documentation on what it does and how to get it working?
Thanks!
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.