# generator expression $\<$\<BOOL:MSVC\>:dllmain.c\> evaluate to dllmain.c on linux

**URL:** https://discourse.cmake.org/t/generator-expression-bool-msvc-dllmain-c-evaluate-to-dllmain-c-on-linux/2150
**Category:** Code
**Created:** [November 11, 2020, 5:43am UTC](https://discourse.cmake.org/t/generator-expression-bool-msvc-dllmain-c-evaluate-to-dllmain-c-on-linux/2150 "2020-11-11T05:43:53Z")
**Posts on this page:** 4
**Page:** 1

<div class="post-metadata">

### Author: ![quanzhuo](https://discourse.cmake.org/letter_avatar_proxy/v4/letter/q/13edae/32.png) [@quanzhuo](https://discourse.cmake.org/u/quanzhuo)
#### Post date: [November 11, 2020, 5:43am UTC](https://discourse.cmake.org/t/generator-expression-bool-msvc-dllmain-c-evaluate-to-dllmain-c-on-linux/2150/1 "2020-11-11T05:43:53Z")

</div>

All is in title.  
$\<$\< BOOL:MSVC\>:dllmain.c\> evaluate to dllmain.c on Windows which is expected, However, it evaluated to dllmain.c on linux too. Why ?

I use cmake 3.18 on both windows and linux.

---

<div class="post-metadata">

### Author: ![marc.chevrier](https://discourse.cmake.org/letter_avatar_proxy/v4/letter/m/ecb155/32.png) [@marc.chevrier](https://discourse.cmake.org/u/marc.chevrier)
#### Post date: [November 11, 2020, 9:52am UTC](https://discourse.cmake.org/t/generator-expression-bool-msvc-dllmain-c-evaluate-to-dllmain-c-on-linux/2150/2 "2020-11-11T09:52:38Z")

</div>

`MSVC` is a variable, so it must be evaluated:

```cmake
$<$< BOOL:${MSVC}>:dllmain.c> 

```

But it is preferable to use more reliable method by targeting only the compiler you expect:

```cmake
$<$<C_COMPILER_ID:MSVC>:dllmain.c>

```

---

<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: [November 11, 2020, 2:08pm UTC](https://discourse.cmake.org/t/generator-expression-bool-msvc-dllmain-c-evaluate-to-dllmain-c-on-linux/2150/3 "2020-11-11T14:08:12Z")

</div>

I think you likely want `$<PLATFORM_ID:Windows>` since even when MinGW is in use, that file should be included.

---

<div class="post-metadata">

### Author: ![quanzhuo](https://discourse.cmake.org/letter_avatar_proxy/v4/letter/q/13edae/32.png) [@quanzhuo](https://discourse.cmake.org/u/quanzhuo)
#### Post date: [November 12, 2020, 1:01am UTC](https://discourse.cmake.org/t/generator-expression-bool-msvc-dllmain-c-evaluate-to-dllmain-c-on-linux/2150/4 "2020-11-12T01:01:37Z")

</div>

Thank you all
