Диагностический флаг Clang с ‘#’ вызывает ошибку сборки

#cmake #compiler-errors #clang #compiler-options

#cmake #ошибки компилятора #clang #параметры компилятора

Вопрос:

В моем файле cmake мне нужно добавить диагностический флаг clang, который включает a # , как показано в документах clang для диагностических флагов.

Однако cmake интерпретируется # как замечание и завершается ошибкой.

Например:

 add_definitions(-W#pragma-messages)
 

интерпретируется как:

 add_definitions(-W
 

Как предполагается использовать этот флаг в сценарии cmake?

Комментарии:

1. Вы уже пытались заключить аргумент в кавычки, т.е. add_definitions("-W#pragma-messages")

2. Это работает! Я не знал, что вы можете вложить параметры, и также кажется неудобным включать знак хэша в параметр компилятора… В любом случае, пожалуйста, отправьте комментарий в качестве ответа.

Ответ №1:

В CMake все, что следует за # символом до конца строки, рассматривается как комментарий.

Чтобы предотвратить такое поведение для ваших определений и параметров компиляции, вам необходимо указать весь аргумент целиком

 add_definitions("-W#pragma-messages")