AW: installing libs on Windows

Nhuh Put nhuh.put at web.de
Sat Jul 21 04:18:00 BST 2007


Hello
The install destination should be changed only for libraries, which are
loaded at application initialisation, not for libraries which are loaded
with QLibrary or KLibLoader.
I would rather add a new macro for this, as the longer install syntax is
easily forgotten (see the patch in the attachment).
There is also a new option in the new cmake version, but I didn't find any
documentation about it.

	PutHuhn

-----Ursprüngliche Nachricht-----
Von: Alexander Neundorf
Gesendet: Samstag, 21. Juli 2007 04:55
Betreff: installing libs on Windows

Hi,

on Windows there is no RPATH, so the only way for executables to find their 
dlls (e.g. kdecore.dll) is that either 
A) the dlls are in the same directory as the executable, or 
B) the directory where the dlls are is in the PATH.

In KDE4 we currently do:
INSTALL(TARGETS kdecore DESTINATION ${LIB_INSTALL_DIR})
This means we rely on option B).

We could do the following:
INSTALL(TARGETS kdecore 
                             LIBRARY DESTINATION ${LIB_INSTALL_DIR}
                             RUNTIME DESTINATION ${BIN_INSTALL_DIR}
                             ARCHIVE DESTINATION ${LIB_INSTALL_DIR})

This will install the .so and .dylib files to LIB_INSTALL_DIR ("LIBRARY"), 
the .dll files and executables to BIN_INSTALL_DIR ("RUNTIME") and the .lib 
and .a files also to LIB_INSTALL_DIR ("ARCHIVE").

It is then also possible to install libs and executables with one command:
INSTALL(TARGETS kdecore  kde4-config
                             LIBRARY DESTINATION ${LIB_INSTALL_DIR}
                             RUNTIME DESTINATION ${BIN_INSTALL_DIR}
                             ARCHIVE DESTINATION ${LIB_INSTALL_DIR})

The Windows developers would prefer this, the executables will be able to
run 
without changing the PATH. How will the executables actually be installed ? 
Via an installer which can also adjust the PATH maybe ?

Anyway, this would mean that this full syntax has to be used for every 
installed library, otherwise it won't work on Windows.
As it is now, it's a bit harder for the Windows guys but safes the average 
Linux KDE hacker from thinking about Windows and he can just do 
INSTALL(TARGETS mylib DESTINATION lib)
(of course LIB_INSTALL_DIR is better but in most cases it's just the same 
result) and it will still work on Windows (if the system is already able to 
run any KDE app).

So, are their objections against using the full INSTALL() syntax everywhere
?

Bye
Alex


-------------- next part --------------
A non-text attachment was scrubbed...
Name: windows_bin2.patch
Type: application/octet-stream
Size: 1268 bytes
Desc: not available
URL: <http://mail.kde.org/pipermail/kde-core-devel/attachments/20070721/e1387465/attachment.obj>


More information about the kde-core-devel mailing list