I have this code in 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})
The env var BOOST_HOME is defined (/home/ferran/boost). The behavior is very odd because the output is:
-- BOOST_HOME at /home/ferran/boost
CMake Error at CMakeLists.txt:14 (message):
Undefined BOOST_HOME env var.
-- Configuring incomplete, errors occurred!
So, the var exists and prints its contents and at the same time does not exists?
You need to avoid dereferencing the variable BOOST_DIR
in the if
statement:
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()
By dereferencing BOOST_DIR
, you're effectively querying if CMake has a variable called /home/ferran/boost
defined.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With