我在我的一个项目中使用了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!

那么,显示的代码如何找到函数但未设置变量呢?或者是别的什么?

最佳答案

指定 header 时必须添加引号:

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

否则,ALLOCA_EXISTS将被忽略,并使用值cstdlib创建变量TRUE

关于c++ - 为什么此CMake脚本找到 “alloca”仍然失败?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44579381/

10-10 16:56