>From what I can tell, the search order is still preserved as expected. [chuck.atkins@hal9000 testdir]$ cat TestFindProgram.cmake set(CMAKE_PREFIX_PATH "/FOODIR_CMAKE_PREFIX_PATH1;/FOODIR_CMAKE_PREFIX_PATH2" CACHE STRING "" FORCE) set(CMAKE_PROGRAM_PATH "/FOODIR_CMAKE_PROGRAM_PATH1;/FOODIR_CMAKE_PROGRAM_PATH2" CACHE STRING "" FORCE) set(CMAKE_APPBUNDLE_PATH "/FOODIR_CMAKE_APPBUNDLE_PATH1;/FOODIR_CMAKE_APPBUNDLE_PATH2" CACHE STRING "" FORCE)
set(ENV{CMAKE_PREFIX_PATH} "/FOODIR_ENV_CMAKE_PREFIX_PATH1:/FOODIR_ENV_CMAKE_PREFIX_PATH2" ) set(ENV{CMAKE_PROGRAM_PATH} "/FOODIR_ENV_CMAKE_PROGRAM_PATH1:/FOODIR_ENV_CMAKE_PROGRAM_PATH2" ) set(ENV{CMAKE_APPBUNDLE_PATH} "/FOODIR_ENV_CMAKE_APPBUNDLE_PATH1:/FOODIR_ENV_CMAKE_APPBUNDLE_PATH2" ) set(ENV{PATH} "/FOODIR_ENV_PATH1:/FOODIR_ENV_PATH2") set(CMAKE_SYSTEM_PREFIX_PATH "/FOODIR_CMAKE_SYSTEM_PREFIX_PATH1;/FOODIR_CMAKE_SYSTEM_PREFIX_PATH2" CACHE STRING "" FORCE) set(CMAKE_SYSTEM_PROGRAM_PATH "/FOODIR_CMAKE_SYSTEM_PROGRAM_PATH1;/FOODIR_CMAKE_SYSTEM_PROGRAM_PATH2" CACHE STRING "" FORCE) set(CMAKE_SYSTEM_APPBUNDLE_PATH "/FOODIR_CMAKE_SYSTEM_APPBUNDLE_PATH1;/FOODIR_CMAKE_SYSTEM_APPBUNDLE_PATH2" CACHE STRING "" FORCE) find_program(FOO foo.bin HINTS /FOODIR_FP_HINTS1 /FOODIR_FP_HINTS2 PATHS /FOODIR_FP_PATHS1 /FOODIR_FP_PATHS2) [chuck.atkins@hal9000 testdir]$ By setting each possible location to FOODIR_LOCATIONNAME1 and FOODIR_LOCATIONMAME2, strace make sit easy to see whats searched for in what order: [chuck.atkins@hal9000 testdir]$ strace cmake -P TestFindProgram.cmake 2>&1 | sed -n 's|^[^"]*"\([^"]*foo.bin\)".*|\1|p' foo.bin /FOODIR_CMAKE_PREFIX_PATH1/bin/foo.bin /FOODIR_CMAKE_PREFIX_PATH1/sbin/foo.bin /FOODIR_CMAKE_PREFIX_PATH1/foo.bin /FOODIR_CMAKE_PREFIX_PATH2/bin/foo.bin /FOODIR_CMAKE_PREFIX_PATH2/sbin/foo.bin /FOODIR_CMAKE_PREFIX_PATH2/foo.bin /FOODIR_CMAKE_PROGRAM_PATH1/foo.bin /FOODIR_CMAKE_PROGRAM_PATH2/foo.bin /FOODIR_CMAKE_APPBUNDLE_PATH1/foo.bin /FOODIR_CMAKE_APPBUNDLE_PATH2/foo.bin /FOODIR_ENV_CMAKE_PREFIX_PATH1/bin/foo.bin /FOODIR_ENV_CMAKE_PREFIX_PATH1/sbin/foo.bin /FOODIR_ENV_CMAKE_PREFIX_PATH1/foo.bin /FOODIR_ENV_CMAKE_PREFIX_PATH2/bin/foo.bin /FOODIR_ENV_CMAKE_PREFIX_PATH2/sbin/foo.bin /FOODIR_ENV_CMAKE_PREFIX_PATH2/foo.bin /FOODIR_ENV_CMAKE_PROGRAM_PATH1/foo.bin /FOODIR_ENV_CMAKE_PROGRAM_PATH2/foo.bin /FOODIR_ENV_CMAKE_APPBUNDLE_PATH1/foo.bin /FOODIR_ENV_CMAKE_APPBUNDLE_PATH2/foo.bin /FOODIR_FP_HINTS1/foo.bin /FOODIR_FP_HINTS2/foo.bin /FOODIR_ENV_PATH1/foo.bin /FOODIR_ENV_PATH2/foo.bin /FOODIR_CMAKE_SYSTEM_PREFIX_PATH1/bin/foo.bin /FOODIR_CMAKE_SYSTEM_PREFIX_PATH1/sbin/foo.bin /FOODIR_CMAKE_SYSTEM_PREFIX_PATH1/foo.bin /FOODIR_CMAKE_SYSTEM_PREFIX_PATH2/bin/foo.bin /FOODIR_CMAKE_SYSTEM_PREFIX_PATH2/sbin/foo.bin /FOODIR_CMAKE_SYSTEM_PREFIX_PATH2/foo.bin /FOODIR_CMAKE_SYSTEM_PROGRAM_PATH1/foo.bin /FOODIR_CMAKE_SYSTEM_PROGRAM_PATH2/foo.bin /FOODIR_CMAKE_SYSTEM_APPBUNDLE_PATH1/foo.bin /FOODIR_CMAKE_SYSTEM_APPBUNDLE_PATH2/foo.bin /FOODIR_FP_PATHS1/foo.bin /FOODIR_FP_PATHS2/foo.bin [chuck.atkins@hal9000 testdir]$ >From this, it looks like the find_program(... HINTS ...) are still searched before ENV{PATH}: /FOODIR_FP_HINTS1/foo.bin /FOODIR_FP_HINTS2/foo.bin /FOODIR_ENV_PATH1/foo.bin /FOODIR_ENV_PATH2/foo.bin - Chuck On Wed, Sep 9, 2015 at 11:01 AM, Brad King <brad.k...@kitware.com> wrote: > On 09/03/2015 03:51 AM, CHEVRIER, Marc wrote: > > 1. Build phase. Under find_program.BUG/build, use CMakeLists.txt to > prepare runtime part > > 2. Test phase. Under find_program.BUG/runtime, use CMakeLists.txt to > show the bug. > > Thanks, Marc. > > Chuck, this was regressed by your changes in CMake 3.2: > > Merge topic 'refactor-search-path-construction' > http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=dd89506c > > Please revise the logic to preserve the documented behavior: > > http://www.cmake.org/cmake/help/v3.3/command/find_program.html > > HINTS should be preferred before ENV{PATH}. Please also add > appropriate test cases (e.g. Tests/RunCMake/find_program) and > also check the behavior for other find_* commands. > > Thanks, > -Brad > >
-- 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://public.kitware.com/mailman/listinfo/cmake-developers