gpt4 book ai didi

cmake DEFINED 似乎无法识别变量

转载 作者:行者123 更新时间:2023-12-03 21:19:07 25 4
gpt4 key购买 nike

我在 cmake 中有这个代码:

#mandatory
SET(BOOST_DIR "$ENV{BOOST_HOME}")
if (DEFINED ${BOOST_DIR})
#global include directories
include_directories(${BOOST_DIR})
else(DEFINED ${BOOST_DIR})
message( STATUS "BOOST_HOME at ${BOOST_DIR}")

message( FATAL_ERROR "Undefined BOOST_HOME env var.")
endif(DEFINED ${BOOST_DIR})

环境变量 BOOST_HOME 已定义 (/home/ferran/boost)。这种行为很奇怪,因为输出是:
-- BOOST_HOME at /home/ferran/boost
CMake Error at CMakeLists.txt:14 (message):
Undefined BOOST_HOME env var.


-- Configuring incomplete, errors occurred!

那么,var 存在并打印其内容,同时又不存在?

最佳答案

您需要避免取消引用变量 BOOST_DIRif陈述:

set(BOOST_DIR "$ENV{BOOST_HOME}")
if(BOOST_DIR) # <--- Use 'BOOST_DIR', not 'DEFINED ${BOOST_DIR}'
#global include directories
include_directories(${BOOST_DIR})
else()
message(STATUS "BOOST_HOME at ${BOOST_DIR}")
message(FATAL_ERROR "Undefined BOOST_HOME env var.")
endif()

通过取消引用 BOOST_DIR ,您实际上是在查询 CMake 是否有一个名为 /home/ferran/boost 的变量定义。

关于cmake DEFINED 似乎无法识别变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15385252/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com