Как объявить функцию как макрос используя CMake - PullRequest
3 голосов
/ 03 апреля 2020

Я не могу найти способ объявления функции, такой как макросы, в CMake.

Мне нужна функция макроса, например:

#define MYFUNC(foo) QString( foo + "_suffix" )

, которая будет определена моим файлом CMakeLists.txt. Я пробовал:

add_definitions("-DMYFUNC(foo)=QString\(foo+\"_suffix\"\)")

и

add_definitions("-DMYFUNC\(foo\)=QString\(foo+\"_suffix\"\)")

, но ничего не работает, компилятор (VS2015) всегда сообщает MYFUNC не определено ...

1 Ответ

4 голосов
/ 03 апреля 2020

Из документации Visual Studio в / D :

Параметр / D не поддерживает определения макросов, подобные функциональным. Чтобы вставить определения, которые не могут быть определены в командной строке, рассмотрите опцию компилятора / FI (имя принудительного включения в файл).

Для полноты G CC делает поддерживает определение макросов функции из командной строки:

Если вы хотите sh определить функционально-подобный макрос в командной строке, напишите его список аргументов с окружающими скобками перед знак равенства (если есть). Скобки имеют смысл для большинства оболочек, поэтому вы должны указать эту опцию. С sh и csh, -D'name (args…) = определение 'работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...