Я использую 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!
Так почему же показанный код находит функцию, но не устанавливает переменную? Или что-то еще?
Вы должны добавить кавычки при указании заголовков:
check_symbol_exists(alloca "stdlib.h;cstdlib" ALLOCA_EXISTS)
Иначе, ALLOCA_EXISTS
игнорируется и переменная cstdlib
создается со значением TRUE
,
Других решений пока нет …