inorton / cclash

ccache / clcache inspired compiler cache for cl.exe
75 stars 13 forks source link

Compiling qt reports only unsupported #27

Open TheOneRing opened 8 years ago

TheOneRing commented 8 years ago

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.

inorton commented 8 years ago

can you give me an example of one whole command line?

TheOneRing commented 8 years ago

[36/203] R:\bin\cl.exe /nologo /TP -DLIBSNORE_PLUGIN_PATH=\"r:/plugins/libsnore-qt5\" -DQT_CORE_LIB -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_NO_CAST_FROM_ASCII -DQT_NO_CAST_FROM_BYTEARRAY -DQT_NO_CAST_TO_ASCII -DQT_NO_SIGNALS_SLOTS_KEYWORDS -DQT_NO_URL_CAST_FROM_STRING -DQT_STRICT_ITERATORS -DQT_USE_FAST_OPERATOR_PLUS -DQT_USE_QSTRINGBUILDER -DSNORE_SUFFIX=\"-qt5\" -DUNICODE -DWIN32_LEAN_AND_MEAN -DWINVER=0x0600 -D_CRT_NONSTDC_NO_DEPRECATE -D_CRT_SECURE_NO_DEPRECATE -D_CRT_SECURE_NO_WARNINGS -D_SCL_SECURE_NO_WARNINGS -D_UNICODE -D_USE_MATH_DEFINES -D_WIN32_IE=0x0600 -D_WIN32_WINNT=0x0600 -Dlibsnore_EXPORTS -Isrc\libsnore -IQ:\snorenotify\src\libsnore -IQ:\snorenotify\src -Isrc -IR:\include\qt5 -IR:\include\qt5\QtCore -IR:\.\mkspecs\win32-msvc2015 -IR:\include\qt5\QtGui -IR:\include\qt5\QtNetwork /DWIN32 /D_WINDOWS /W3 /GR /EHsc /wd4250 /wd4251 /wd4396 /wd4661 /D_DEBUG /MDd /Zi /Ob0 /Od /RTC1 /showIncludes /Fosrc\libsnore\CMakeFiles\libsnore.dir\plugins\plugincontainer.cpp.obj /Fdsrc\libsnore\CMakeFiles\libsnore.dir\ /FS -c Q:\snorenotify\src\libsnore\plugins\plugincontainer.cpp

But I guess the easiest way to test it is to download qt and to try to build an example application

inorton commented 8 years ago

Many thanks. There are quite a few flags there I don't recognise

inorton commented 8 years ago

Can you try setting CCLASH_Z7_OBJ=yes in your environment? cclash can't currently cache builds that use PDB files (especially those with implicit names)

TheOneRing commented 8 years ago

Ouch I confused the completely unrelated CCLASH_TRACKER_MODE=yes with CCLASH_Z7_OBJ=yes . It really looks like it works with cmake and qt. Bootstrapping of qtbase won't work out of the box as it expects a pdb and tries to delete it.

Using ninja (multijob build tool) with cmake killed the cclash server.

inorton commented 8 years ago

Aha I shal investigate!

You might have more luck with tracker mode turned off. It's quite a new feature and is actually slower than normal direct mode. On 28 Jun 2016 14:32, "Hannah von Reth" notifications@github.com wrote:

Ouch I confused the completely unrelated CCLASH_TRACKER_MODE=yes with CCLASH_Z7_OBJ=yes . It really looks like it works with cmake and qt. Bootstrapping of qtbase won't work out of the box as it expects a pdb and tries to delete it.

Using ninja (multijob build tool) with cmake killed the cclash server.

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/inorton/cclash/issues/27#issuecomment-229049605, or mute the thread https://github.com/notifications/unsubscribe/AADmGnq-4p-O_kv827AOj0q-UaI1bp3sks5qQSKHgaJpZM4I8hKZ .

inorton commented 8 years ago

On further investigation caching with PDBs is quite problematic, infact I'm suprised anything other than a concurrent msbuild being able to cope with it as mspdbsrv will create or update PDB files often considerably later after the compiler has exited and built a file. This can be very hard to monitor. Eg

This can get very wierd if the monent the compiler exits we compile another file that will contribute to the same pdb. If the pdb exists then there are two possible states it can be in before compiling the second file depending on how long we wait..