В CMake, как работает CHECK_INCLUDE_FILE_CXX? - PullRequest
8 голосов
/ 15 июня 2010

Следующий код ничего не печатает

CHECK_INCLUDE_FILE_CXX(glog/logging.h GLOG_INCLUDE)
IF(GLOG_INCLUDE)
   MESSAGE("YY")
ENDIF(GLOG_INCLUDE)

Но у меня установлена ​​следующая переменная среды:

export CPLUS_INCLUDE_PATH=/usr/local/include

И, "ls / usr / local / include / glog / logging.h "возвращает файл.

Я пытался использовать

include_directories( "/usr/local/include" )

, но GLOG_INCLUDE остается неопределенным после (logging.h остается не найденным.)

1 Ответ

8 голосов
/ 15 июня 2010

Взгляните на CheckIncludeFileCXX.cmake.Он должен находиться в каталоге вашей установки cmake (он есть в /usr/share/cmake-2.8/Modules).

В этом файле указано:

# The following variables may be set before calling this macro to
# modify the way the check is run:
#
#  CMAKE_REQUIRED_FLAGS = string of compile command line flags
#  CMAKE_REQUIRED_DEFINITIONS = list of macros to define (-DFOO=bar)
#  CMAKE_REQUIRED_INCLUDES = list of include directories
#  

Поэтому вы можете попробовать установить эту переменную перед вызовом команды, например:

set (CMAKE_REQUIRED_INCLUDES "/usr/local/include")
CHECK_INCLUDE_FILE_CXX(glog/logging.h GLOG_INCLUDE)
IF(GLOG_INCLUDE)
   MESSAGE("YY")
ENDIF(GLOG_INCLUDE)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...