Alexander Neundorf wrote: > I think that's a good idea. > Qt, once built, knows where the compiler is and what the target operating > system is, so it is a good source of information for that. > It also knows at least some part of CMAKE_FIND_ROOT_PATH, that would be > its own install locations, maybe it knows even more about where things are > to be found for the target ? >
I've uploaded the change I've worked on for Qt: https://codereview.qt-project.org/#change,53858 The CMAKE_FIND_ROOT_PATH is indeed known, as is the CMAKE_PREFIX_PATH and all relevant compilers. That seems to be all the relevant information for a toolchain. I tried also defining CMAKE_AR and CMAKE_LINKER, but that fails and is not needed anyway. Setting CMAKE_LINKER fails because the variable contains 'g++' and the '+' cause regex compile failure in CMakeParseImplicitLinkInfo.cmake. So, after building Qt, a project can be built using cmake .. -DCMAKE_TOOLCHAIN_FILE=/path/to/qt/cmake/Qt5Toolchain.cmake The generated file is deliberately named generically so that that always works. The path to the Qt build will be specific enough anyway. The toolchain files contain absolute paths to the sysroot and the cross- compilers. When building Qt, a sysroot can be passed to the configure script, and a so- called 'host-prefix' can be passed too. Cross compiled libraries get installed into the prefix, and host-compiled tools like moc and qmake get installed to the hostprefix. In my patch, I install the toolchain file to $$hostprefix/cmake/Qt5Toolchain.cmake I'm not sure about the exact location to install it to, because there is no precedent for installing toolchain files, nor is there likely to be another reason to in another project. Toolchain files are specific to a pair of compiler and sysroot, which are often distributed separately. Installing the toolchain file only makes sense for Qt because the Qt installation is already specific to that compiler and sysroot, and because Qt doesn't use cmake itself (otherwise the toolchain file would already be a prerequisite to building Qt). So, I don't really see this situation coming up again. Any better ideas of where to install it to anyway? Thanks, Steve. -- Powered by www.kitware.com Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ Follow this link to subscribe/unsubscribe: http://public.kitware.com/cgi-bin/mailman/listinfo/cmake-developers
