Am 10.05.2012 23:22, schrieb David Faure: > On Thursday 10 May 2012 12:09:59 Patrick Spendrin wrote: >> Am 10.05.2012 11:52, schrieb David Faure: >>> Even on Windows I like to have everything in one place, but yes, it >>> requires setting PATH. No big deal, though... We're talking about >>> programs run by developers, who have to set PATH anyway (to point to Qt >>> among other things). >> >> No, the problem is different: this is not about setting the path to Qt >> or other installed libraries, but instead to set the path to uninstalled >> libraries: > > I'm also talking about uninstalled libraries. Configure Qt with -prefix=%CD% - > developer-mode to see what I mean: the auto tests for Qt have to find the Qt > libraries. > >> Think of a layout like this >> / >> /src >> /src/first.dll >> /src/tests/firsttest.exe >> >> This would require setting the path to /src and all other such library >> directories where libraries exist that are linked to firsttest.exe. > > Yes. This has ALWAYS been the case for unittests in kdelibs 4. > > Do we generate .bat files that set the PATH, on Windows? > >>>> One other solution I could think of is to link the test executables into >>>> that directory (so that ./kurltest works for you), but I am not sure how >>>> hard that would be. >>> >>> Aeh? You lost me. Linking (creating) the test executables into the current >>> directory, is exactly what this whole discussion is about... >> >> no, making softlinks (ln -s) inside the tests directory. > > Ah! That would work. But it would only solve "finding the binary", not > "finding > the uninstalled libraries" [which is not what this thread was initially > about, > but we're talking about this now]. So while this would be better than > nothing, > we also need an RPATH or wrapper script solution so that "make test" works > (i.e. uses uninstalled libs). > >>> And the solution will exist everywhere: exporting PATH (Windows) or >>> LD_LIBRARY_PATH (Unixes). >> >> One of the problems of PATH is that it is size-restricted: max. 2047 >> chars (think of 20 library destinations à 100 chars) according to >> http://support.microsoft.com/kb/830473 (it could actually also be the >> mentioned 8k chars, but this is probably dependent on Windows version). >> My default environment script already sets PATH to a length of 1400 chars... >> >> If you ensure that there are no more than a handful of library >> destinations, this might of course be ok. > > All libs go into lib/, so in a given module/framework there's only one more > path to add.
Hm, I think I misunderstood something in the beginning. There actually still is a difference between CMAKE_RUNTIME_OUTPUT_DIRECTORY and EXECUTABLE_OUTPUT_PATH - according to the documentation of cmake, CMAKE_RUNTIME_OUTPUT_DIRECTORY supercedes EXECUTABLE_OUTPUT_PATH which leads to the following problematic layouts: if we do not set RUNTIME_OUTPUT_DIRECTORY but only EXECUTABLE_OUTPUT_PATH, libraries will end up whereever they come from on windows which requires additional path calculations etc. if we do set RUNTIME_OUTPUT_DIRECTORY, we move all libraries & executables into one dir on Windows, and on linux we do keep all the libraries where they are (or set LIBRARY_OUTPUT_DIRECTORY) but we still just put all executables into one directory. I have no idea about the rpath stuff, but iirc there was some resetting of rpath going on when running make install to fix the different needs? regards, Patrick _______________________________________________ Kde-frameworks-devel mailing list Kde-frameworks-devel@kde.org https://mail.kde.org/mailman/listinfo/kde-frameworks-devel