Hi there, By default Qt is configured with a reduce-relocations flag to its configure script.
If that flag is enabled, then an #error in the preprocessor is hit if users of Qt do not compile with -fPIE or -fPIC in that case. http://qt.gitorious.org/qt/qtbase/blobs/HEAD/src/corelib/global/qglobal.h Compiling with -fPIE or -fPIC is not needed if Qt is configured with the flag -no-reduce-relocations as I do, so I didn't notice until now the extent of the problems this causes. In qmake the problem we see in cmake doesn't occur, because qmake knows whether it is building an executable or a shared library. In cmake we need to set (exclusively) either -fPIE or -fPIC at directory level, and if we have executables and shared libraries in the same directory scope, we can't use them with the directory-level set() command. There are a few ways to solve this, including * Wrapping all invokations of add_library and add_executable, which we would prefer not to. * Adding logic to CMake so that it would do s/fPIE/PIC/ when building libraries and the opposite when building executables. This is what libtool does apparently (http://lists.debian.org/debian- devel/2012/01/msg00784.html). * Make set(CMAKE_POSITION_INDEPENDENT_BINARIES True) set the appropriate flags. Any comments on those options? Thanks, Steve. _______________________________________________ Kde-buildsystem mailing list [email protected] https://mail.kde.org/mailman/listinfo/kde-buildsystem
