installing libs on Windows

Alexander Neundorf neundorf at kde.org
Sat Jul 21 03:55:15 BST 2007


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







More information about the kde-core-devel mailing list