我在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})
Run Code Online (Sandbox Code Playgroud)
定义了env var 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!
Run Code Online (Sandbox Code Playgroud)
因此,var存在并打印其内容并且同时不存在?
Fra*_*ser 28
您需要避免BOOST_DIR在if语句中取消引用该变量:
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()
Run Code Online (Sandbox Code Playgroud)
通过解除引用BOOST_DIR,您可以有效地查询CMake是否有一个名为/home/ferran/boostdefined 的变量.
| 归档时间: |
|
| 查看次数: |
19621 次 |
| 最近记录: |