On 2008-07-02 19:39 +0200, Hendrik Sattler wrote: > Am Mittwoch, 2. Juli 2008 18:59:37 schrieb Wookey: > > I tried to fix the FindPkgConfig.cmake file to automaticaly do this, > > but found that it uses execute_process to call pkg-config and there > > seems to be no way to set an environment variable with this call. Am I > > missing something? Fixing this module to look in > > CMAKE_FIND_ROOT_PATH when cross-compiling seems like the best fix to > > me, but there may be a better way? > > Yes, that should be fixed. It should work to use SET() to set an environment > variable and the child process from EXECUTE_PROCESS should get the copy of > that environment. BUT: you must use PKG_CONFIG_LIBDIR instead of > PKG_CONFIG_PATH!
Ah, so I do - well done. That will avoid native libs being found. I got the impression that SET() only set CMAKE variables, not environment ones, but maybe they ammount to the same thing? <fx: reads docs again> Ah, yes there is the ENV{} syntax. Brill. that means I can now add IF (CMAKE_CROSSCOMPILING) SET(ENV{PKG_CONFIG_LIBDIR} ${CMAKE_FIND_ROOT_PATH}/lib/pkgconfig/) to the toolchain file and that works fine. Putting that in FindPkgConfig.cmake should do the trick. > Additionally, I found that the include paths are another source of problems, > not fully covered by the cmake cross compiling, yet. You really have to -I > any path that is not known and specific to the cross compiler, using > INCLUDE_DIRECTORIES(). This is not done automatically for the changed > ROOT_PATH, yet. Yes. I found that too. I added: IF (CMAKE_CROSSCOMPILING) INCLUDE_DIRECTORIES(BEFORE ${CMAKE_FIND_ROOT_PATH}/include) to my toolchain file, but it would have been nice is cmake did it for me. Wookey -- Principal hats: Balloonz - Toby Churchill - Aleph One - Debian http://wookware.org/ _______________________________________________ CMake mailing list CMake@cmake.org http://www.cmake.org/mailman/listinfo/cmake