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