# Plain and keyword signature

**URL:** https://discourse.cmake.org/t/plain-and-keyword-signature/4720
**Category:** Usage
**Tags:** os:linux
**Created:** [December 20, 2021, 10:08am UTC](https://discourse.cmake.org/t/plain-and-keyword-signature/4720 "2021-12-20T10:08:51Z")
**Posts on this page:** 2
**Page:** 1

<div class="post-metadata">

### Author: ![s0n1c](https://discourse.cmake.org/letter_avatar_proxy/v4/letter/s/839c29/32.png) [@s0n1c](https://discourse.cmake.org/u/s0n1c)
#### Post date: [December 20, 2021, 10:08am UTC](https://discourse.cmake.org/t/plain-and-keyword-signature/4720/1 "2021-12-20T10:08:51Z")

</div>

Hello everyone,

by now I thought to get along with CMake pretty good but there are still some things I am doing wrong. When using it in my current project it gives the error message:

CMake Error at CMakeLists.txt:63 (target\_link\_libraries):  
The plain signature for target\_link\_libraries has already been used with  
the target “target\_name”. All uses of target\_link\_libraries with a  
target must be either all-keyword or all-plain.

Can anyone help me with that?

I am grateful for any kinds of help.

s0n1c

---

<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: [December 20, 2021, 1:50pm UTC](https://discourse.cmake.org/t/plain-and-keyword-signature/4720/2 "2021-12-20T13:50:30Z")

</div>

`all-plain` means using `target_link_libraries()` command **without** keywords (i.e. `PUBLIC`, `PRIVATE`, etc…). `all-keyword` is the reverse: `target_link_libraries()` is used with keywords.

You cannot, for the same target, mix the two signatures. As soon as `target_link_libraries()` command is called on a target with a signature, all other next calls, on the same target, must use the same signature.
