I am building a Linux system with cross-compiler using ptxdist. It allows me to configure Qt4 for installation and it builds and installs qt-everywhere-opensource-src-4.6.3 Ok. However, the qmake internal settings are screwed up and I don’t know how to fix them.
When I run qmake -query I get:
me@ubuntu:~$ qmake -query
QT_INSTALL_PREFIX:/
QT_INSTALL_DATA:/
QT_INSTALL_DOCS://doc
QT_INSTALL_HEADERS://include
QT_INSTALL_LIBS://lib
QT_INSTALL_BINS://bin
QT_INSTALL_PLUGINS://plugins
QT_INSTALL_TRANSLATIONS://translations
QT_INSTALL_CONFIGURATION:/etc/xdg
QT_INSTALL_EXAMPLES://examples
QT_INSTALL_DEMOS://demos
QMAKE_MKSPECS://mkspecs
QMAKE_VERSION:2.01a
QT_VERSION:4.6.3
Through some research, it looks like this can be fixed by simply rebuilding Qt, but it’s not fixing this problem. I dug into the build output a bit and it looks like the ./configure command for the Qt build has “-prefix /usr” so I don’t know why this isn’t being fixed.
I would like to fix these internal values manually if possible because the Qt build takes hours. Does anyone know how to do this?
At configure time these paths are hardcoded in ‘src/corelib/global/qconfig.cpp’, and end up hardcoded into qmake when it is built. They are also hardcoded into many other files, like all the .la and .pc files, not to mention the Makefile install rules.
The only way to fix this is to figure out why configure keeps screwing up the prefix. configure is a big shell script, so it’s easy to see where $QT_INSTALL_PREFIX is assigned from the ‘-prefix’ argument, and then the different checks that are done on it (like running it through ‘config.tests/unix/makeabs’). Try putting print statements before/after $QT_INSTALL_PREFIX is changed, and you should be able to find out where the path gets screwed up.
Also, you don’t have to wait for the full build to complete to tell if the prefix was set
correctly. After configure runs, take a look in ‘src/corelib/global/qconfig.cpp’ and see what ‘qt_configure_prefix_path_str’ is set to.