Почему этот сценарий CMake находит «alloca»? и все равно не получится?

Я использую alloca работать в одном из моих проектов и решил использовать CMake, чтобы убедиться, что он доступен. Поэтому я добавил этот бит в мой файл CMakeLists.txt:

include(CheckSymbolExists)
check_symbol_exists(alloca stdlib.h;cstdlib ALLOCA_EXISTS)
if (NOT ALLOCA_EXISTS)
message(FATAL_ERROR "Platform does not support alloca")
endif ()

Когда я запускаю CMake, это (соответствующая часть) вывод:

-- Looking for alloca
-- Looking for alloca - found
CMake Error at CMakeLists.txt:11 (message):
Platform does not support alloca-- Configuring incomplete, errors occurred!

Так почему же показанный код находит функцию, но не устанавливает переменную? Или что-то еще?

2

Решение

Вы должны добавить кавычки при указании заголовков:

check_symbol_exists(alloca "stdlib.h;cstdlib" ALLOCA_EXISTS)

Иначе, ALLOCA_EXISTS игнорируется и переменная cstdlib создается со значением TRUE,

1

Другие решения

Других решений пока нет …