Hello CMakers, I’m seeing behavior with find_path that seems to be inconsistent with the cmake documentation. According to the documentation (as I understand it), when NO_DEFAULT_PATH is set, the CMAKE_FIND_ROOT_PATH should have no impact on where find_path looks. However it seems to be having a big impact when the CMAKE_TOOLCHAIN_FILE is used.
You’ll see between Experiment 2 and Experiment 3 below, where the only difference is setting set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) and this means the difference between success and failure of find_path, even though CMAKE_FIND_ROOT_PATH should have no impact if NO_DEFAULT_PATH is used. Furthermore CMAKE_FIND_ROOT_PATH_MODE_INCLUDE seems to have this impact only when cross-compiling, not when Thoughts? Is this behavior seem odd to anyone else? Matt Experiment 1: CMakeLists.txt: cmake_minimum_required(VERSION 2.8) set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) find_path(ZLIB_INCLUDE_DIR NAMES zlib.h PATHS /home/vagrant/Projects/cmake-test/zlib-1.2.8 NO_DEFAULT_PATH) message("Found: ${ZLIB_INCLUDE_DIR}”) Output from cmake: cmake .. -- The C compiler identification is GNU 4.6.3 -- The CXX compiler identification is GNU 4.6.3 -- Check for working C compiler: /usr/bin/cc -- Check for working C compiler: /usr/bin/cc -- works -- Detecting C compiler ABI info -- Detecting C compiler ABI info - done -- Check for working CXX compiler: /usr/bin/c++ -- Check for working CXX compiler: /usr/bin/c++ -- works -- Detecting CXX compiler ABI info -- Detecting CXX compiler ABI info - done Found: /home/vagrant/Projects/cmake-test/zlib-1.2.8 -- Configuring done -- Generating done -- Build files have been written to: /home/vagrant/Projects/another-cmake-test/build Experiment 2: CMakeLists.txt: same as above Toolchain file: # this one is important SET(CMAKE_SYSTEM_NAME Linux) # specify the cross compiler set(CMAKE_C_COMPILER /opt/freescale-2010.09/bin/powerpc-linux-gnu-gcc) set(CMAKE_CXX_COMPILER /opt/freescale-2010.09/bin/powerpc-linux-gnu-g++) # where is the target environment set(CMAKE_FIND_ROOT_PATH /opt/freescale-2010.09) # search for programs in the build host directories SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) # for libraries and headers in the target directories SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) Output from cmake: -- The C compiler identification is GNU 4.5.1 -- The CXX compiler identification is GNU 4.5.1 -- Check for working C compiler: /opt/freescale-2010.09/bin/powerpc-linux-gnu-gcc -- Check for working C compiler: /opt/freescale-2010.09/bin/powerpc-linux-gnu-gcc -- works -- Detecting C compiler ABI info -- Detecting C compiler ABI info - done -- Check for working CXX compiler: /opt/freescale-2010.09/bin/powerpc-linux-gnu-g++ -- Check for working CXX compiler: /opt/freescale-2010.09/bin/powerpc-linux-gnu-g++ -- works -- Detecting CXX compiler ABI info -- Detecting CXX compiler ABI info - done Found: ZLIB_INCLUDE_DIR-NOTFOUND -- Configuring done -- Generating done -- Build files have been written to: /home/vagrant/Projects/another-cmake-test/build Experiment 3: CMakeLists.txt: cmake_minimum_required(VERSION 2.8) find_path(ZLIB_INCLUDE_DIR NAMES zlib.h PATHS /home/vagrant/Projects/cmake-test/zlib-1.2.8 NO_DEFAULT_PATH) message("Found: ${ZLIB_INCLUDE_DIR}”) Toolchain file: this one is important SET(CMAKE_SYSTEM_NAME Linux) # specify the cross compiler set(CMAKE_C_COMPILER /opt/freescale-2010.09/bin/powerpc-linux-gnu-gcc) set(CMAKE_CXX_COMPILER /opt/freescale-2010.09/bin/powerpc-linux-gnu-g++) # where is the target environment set(CMAKE_FIND_ROOT_PATH /opt/freescale-2010.09) # search for programs in the build host directories SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) # for libraries and headers in the target directories SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) Output from cmake: cmake -DCMAKE_TOOLCHAIN_FILE=../TC-powerpc-e500v2.cmake .. -- The C compiler identification is GNU 4.5.1 -- The CXX compiler identification is GNU 4.5.1 -- Check for working C compiler: /opt/freescale-2010.09/bin/powerpc-linux-gnu-gcc -- Check for working C compiler: /opt/freescale-2010.09/bin/powerpc-linux-gnu-gcc -- works -- Detecting C compiler ABI info -- Detecting C compiler ABI info - done -- Check for working CXX compiler: /opt/freescale-2010.09/bin/powerpc-linux-gnu-g++ -- Check for working CXX compiler: /opt/freescale-2010.09/bin/powerpc-linux-gnu-g++ -- works -- Detecting CXX compiler ABI info -- Detecting CXX compiler ABI info - done Found: /home/vagrant/Projects/cmake-test/zlib-1.2.8 -- Configuring done -- Generating done -- Build files have been written to: /home/vagrant/Projects/another-cmake-test/build
-- Powered by www.kitware.com Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ Kitware offers various services to support the CMake community. For more information on each offering, please visit: CMake Support: http://cmake.org/cmake/help/support.html CMake Consulting: http://cmake.org/cmake/help/consulting.html CMake Training Courses: http://cmake.org/cmake/help/training.html Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html Follow this link to subscribe/unsubscribe: http://www.cmake.org/mailman/listinfo/cmake