[CMake] find_program usage

vinay kumar Kotegowder vinay.kotegowder at gmail.com
Tue Jun 4 10:08:50 EDT 2019


The original intent of the snippet is to find the required tool chain
(On windows : arm-none-eabi-gcc.exe or armclang.exe; On Linix :
arm-none-eabi-gcc or armclang) path which can later be used to build
the project.

I have been trying with find_program and find_path commands.
My understanding was that it would find the program from root(which is
C: in Windows and / in Linux) and all the sub directories underneath
it but I learnt from your reply that it is not the case.

Can this be done? I mean, should it be possible to find the program
without hard coding the path ?

- Vinay

On Tue, Jun 4, 2019 at 7:12 PM Kyle Edwards <kyle.edwards at kitware.com> wrote:
>
> On Tue, 2019-06-04 at 19:07 +0530, vinay kumar Kotegowder wrote:
> > Hi Everyone,
> >
> > This is simple code running on Windows machine:
> >
> > if(WIN32)
> >   message(STATUS "On windows")
> >   find_program(_TOOL
> >               arm-none-eabi-gcc.exe
> >               PATHS "C:"
> >             )
> > endif()
> >
> > message(STATUS "${_TOOL}")
> >
> > Result after executing: cmake -P mycmake.cmake
> >
> > -- On windows
> > -- _TOOL-NOTFOUND
> >
> > Can anyone tell me what is wrong with the usage of "find_program"  ?
>
> find_program() is looking in C:, but not its subdirectories. So, unless
> arm-none-eabi-gcc.exe is located directly in C:, CMake won't find it.
>
> As a side note, GCC isn't typically found with find_program(). You most
> likely want to write a cross-compiling toolchain file which contains
> this location instead. See below for details:
>
> https://cmake.org/cmake/help/v3.14/manual/cmake-toolchains.7.html
>
> Kyle


More information about the CMake mailing list