2010-06-15 63 views
7

下面的代碼打印什麼在CMake中,CHECK_INCLUDE_FILE_CXX如何工作?

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仍然沒有找到。)

回答

7

看一看的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 
# 

所以,你可以嘗試caling命令之前設置該變量,就像這樣:

set (CMAKE_REQUIRED_INCLUDES "/usr/local/include") 
CHECK_INCLUDE_FILE_CXX(glog/logging.h GLOG_INCLUDE) 
IF(GLOG_INCLUDE) 
    MESSAGE("YY") 
ENDIF(GLOG_INCLUDE) 
+1

我想,這很奇怪,這個模塊無法使用的系統包括:路徑... – avtomaton 2015-11-23 21:38:07