# using \<packagename\>\_ROOT does not appear to be used by find\_program(\<packagename\>)

**URL:** <https://discourse.cmake.org/t/using-packagename-root-does-not-appear-to-be-used-by-find-program-packagename/2381>\
**Category:** Code\
**Created:** [December 16, 2020, 2:07pm UTC](https://discourse.cmake.org/t/using-packagename-root-does-not-appear-to-be-used-by-find-program-packagename/2381 "2020-12-16T14:07:34Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![grimgort](https://discourse.cmake.org/user_avatar/discourse.cmake.org/grimgort/32/1002_2.png) [@grimgort](https://discourse.cmake.org/u/grimgort)\
**Post date:** [December 16, 2020, 2:07pm UTC](https://discourse.cmake.org/t/using-packagename-root-does-not-appear-to-be-used-by-find-program-packagename/2381/1 "2020-12-16T14:07:34Z")

</div>

Hello,

the following lines of codes can’t find my sqlite3.exe. Is this normal?

set(EXE\_SQLITE3\_ROOT D:/ftarroux/Documents/FRED/BaseGit/simbox\_externalProject/install/Windows-MSVC-1916-Win32/sqlite/bin/)

find\_program(EXE\_SQLITE3 sqlite3 REQUIRED)  
message(“fred ${EXE\_SQLITE3}”)

return : “fred D:/ftarroux/scoop/apps/gdb/current/bin/sqlite3.exe”  
and i want D:/ftarroux/Documents/FRED/BaseGit/simbox\_externalProject/install/Windows-MSVC-1916-Win32/sqlite/bin/sqlite3.exe

---

<div class="post-metadata">

**Author:** ![ben.boeckel](https://discourse.cmake.org/letter_avatar_proxy/v4/letter/b/ea5d25/32.png) [@ben.boeckel](https://discourse.cmake.org/u/ben.boeckel)\
**Post date:** [December 16, 2020, 2:51pm UTC](https://discourse.cmake.org/t/using-packagename-root-does-not-appear-to-be-used-by-find-program-packagename/2381/2 "2020-12-16T14:51:54Z")

</div>

The `_ROOT` variable is only used by `find_package`, not arbitrary `find_XXX` calls. You can add `HINTS ${EXE_SQLITE3_ROOT}` though to use it if available.

---

<div class="post-metadata">

**Author:** ![grimgort](https://discourse.cmake.org/user_avatar/discourse.cmake.org/grimgort/32/1002_2.png) [@grimgort](https://discourse.cmake.org/u/grimgort)\
**Post date:** [December 17, 2020, 9:31am UTC](https://discourse.cmake.org/t/using-packagename-root-does-not-appear-to-be-used-by-find-program-packagename/2381/3 "2020-12-17T09:31:04Z")

</div>

Thanks.

But in documentation we can see : [https://cmake.org/cmake/help/latest/command/find\_program.html](https://cmake.org/cmake/help/latest/command/find_program.html)

If called from within a find module or any other script loaded by a call to `find_package(<PackageName>)`, search prefixes unique to the current package being found. Specifically, look in the `<PackageName>_ROOT` CMake variable and the `<PackageName>_ROOT` environment variable. The package root variables are maintained as a stack, so if called from nested find modules or config packages, root paths from the parent’s find module or config package will be searched after paths from the current module or package. In other words, the search order would be `<CurrentPackage>_ROOT`, `ENV{<CurrentPackage>_ROOT}`, `<ParentPackage>_ROOT`, `ENV{<ParentPackage>_ROOT}`, etc. This can be skipped if NO\_PACKAGE\_ROOT\_PATH is passed or by setting the CMAKE\_FIND\_USE\_PACKAGE\_ROOT\_PATH to FALSE. See policy CMP0074.

is it an error ?

---

<div class="post-metadata">

**Author:** ![Angew](https://discourse.cmake.org/user_avatar/discourse.cmake.org/angew/32/229_2.png) [@Angew](https://discourse.cmake.org/u/Angew)\
**Post date:** [December 17, 2020, 9:58am UTC](https://discourse.cmake.org/t/using-packagename-root-does-not-appear-to-be-used-by-find-program-packagename/2381/4 "2020-12-17T09:58:04Z")

</div>

From the docs you quoted:

> [@grimgort](#):
>
> If called from within a find module or any other script loaded by a call to find\_package(),

_Are_ you calling `find_program` from a find module or a script loaded by `find_package`? You made no indication of such in your original post, and it seemed you’re just calling it from your `CMakeLists.txt` file.

---

<div class="post-metadata">

**Author:** ![ben.boeckel](https://discourse.cmake.org/letter_avatar_proxy/v4/letter/b/ea5d25/32.png) [@ben.boeckel](https://discourse.cmake.org/u/ben.boeckel)\
**Post date:** [December 17, 2020, 11:37am UTC](https://discourse.cmake.org/t/using-packagename-root-does-not-appear-to-be-used-by-find-program-packagename/2381/5 "2020-12-17T11:37:16Z")

</div>

Oh, good catch. I didn’t realize that its usage was context-sensitive for other `find_XXX` calls. If that is the case, the `_ROOT` probably needs to lose the `bin` suffix.

---

<div class="post-metadata">

**Author:** ![grimgort](https://discourse.cmake.org/user_avatar/discourse.cmake.org/grimgort/32/1002_2.png) [@grimgort](https://discourse.cmake.org/u/grimgort)\
**Post date:** [December 17, 2020, 12:56pm UTC](https://discourse.cmake.org/t/using-packagename-root-does-not-appear-to-be-used-by-find-program-packagename/2381/6 "2020-12-17T12:56:34Z")

</div>

Thank you,

I had missed the “if”. So I wouldn’t use \<package\_name\>\_ROOT.
