# Add warning message in CMakeDependentOption

**URL:** https://discourse.cmake.org/t/add-warning-message-in-cmakedependentoption/15751
**Category:** Development
**Created:** [July 17, 2026, 4:33am UTC](https://discourse.cmake.org/t/add-warning-message-in-cmakedependentoption/15751 "2026-07-17T04:33:16Z")
**Posts on this page:** 5
**Page:** 1

<div class="post-metadata">

### Author: ![Growl1234](https://discourse.cmake.org/user_avatar/discourse.cmake.org/growl1234/32/6179_2.png) [@Growl1234](https://discourse.cmake.org/u/Growl1234)
#### Post date: [July 17, 2026, 4:33am UTC](https://discourse.cmake.org/t/add-warning-message-in-cmakedependentoption/15751/1 "2026-07-17T04:33:16Z")

</div>

Hi all,

I think, it would be great to add a warning message into `CMakeDependentOption.cmake`.

For example, if `CMakeLists.txt` defines:

```cmake
cmake_dependent_option(USE_A "description" ON "USE_B" OFF)

```

but users pass `-DUSE_B=OFF -DUSE_A=ON`, the current behavior is to silently force `USE_A` to be `OFF`. A warning message will make it more visible to users, like:

```plaintext
CMake Warning at CMakeDependentOption.cmake:XX (message):
  Option USE_B was explicitly set to ON, but its dependency condition
  "USE_A" is NOT met. Forcing USE_B to OFF.

```

Thank you for considering this suggestion.

Best regards,  
SY

---

<div class="post-metadata">

### Author: ![Growl1234](https://discourse.cmake.org/user_avatar/discourse.cmake.org/growl1234/32/6179_2.png) [@Growl1234](https://discourse.cmake.org/u/Growl1234)
#### Post date: [July 17, 2026, 5:15am UTC](https://discourse.cmake.org/t/add-warning-message-in-cmakedependentoption/15751/2 "2026-07-17T05:15:31Z")

</div>

One example implementation could be:

```patch
--- CMakeDependentOption.cmake	2026-07-17 13:14:31.917565738 +0800
+++ CMakeDependentOption.cmake	2026-07-17 13:13:03.835053126 +0800
@@ -238,6 +238,16 @@
     else()
       if(${option} MATCHES "^${option}$")
       else()
+ get_property(_CDO_OPTION_TYPE CACHE ${option} PROPERTY TYPE)
+ if(NOT "${_CDO_OPTION_TYPE}" STREQUAL "INTERNAL"
+ AND NOT "${${option}}" STREQUAL "${force}")
+ message(WARNING 
+ "Option ${option} was explicitly set to ${${option}}, "
+ "but its dependency condition \"${depends}\" is NOT met. "
+ "Forcing ${option} to ${force}."
+ )
+ endif()
+ unset(_CDO_OPTION_TYPE)
         set(${option} "${${option}}" CACHE INTERNAL "${doc}")
       endif()
       set(${option} ${force})

```

---

<div class="post-metadata">

### Author: ![brad.king](https://discourse.cmake.org/user_avatar/discourse.cmake.org/brad.king/32/11_2.png) [@brad.king](https://discourse.cmake.org/u/brad.king)
#### Post date: [July 17, 2026, 1:30pm UTC](https://discourse.cmake.org/t/add-warning-message-in-cmakedependentoption/15751/3 "2026-07-17T13:30:49Z")

</div>

@Growl1234 warning once as the overridden value is converted to `INTERNAL` seems reasonable, so long as we also have a way to suppress the warning. Please open an [issue](https://gitlab.kitware.com/cmake/cmake/-/work_items) to propose the feature and discuss the details, and link it from here.

---

<div class="post-metadata">

### Author: ![Growl1234](https://discourse.cmake.org/user_avatar/discourse.cmake.org/growl1234/32/6179_2.png) [@Growl1234](https://discourse.cmake.org/u/Growl1234)
#### Post date: [July 17, 2026, 2:00pm UTC](https://discourse.cmake.org/t/add-warning-message-in-cmakedependentoption/15751/4 "2026-07-17T14:00:29Z")

</div>

Thank you, I’ve just opened one with the same content.

---

<div class="post-metadata">

### Author: ![brad.king](https://discourse.cmake.org/user_avatar/discourse.cmake.org/brad.king/32/11_2.png) [@brad.king](https://discourse.cmake.org/u/brad.king)
#### Post date: [July 17, 2026, 2:03pm UTC](https://discourse.cmake.org/t/add-warning-message-in-cmakedependentoption/15751/5 "2026-07-17T14:03:36Z")

</div>

I see [CMake Issue 27960](https://gitlab.kitware.com/cmake/cmake/-/work_items/27960), thanks.
