簡體   English   中英

CMake 找不到變量或目錄

[英]CMake cannot find variable or directory

我試圖編譯一個舊的代碼庫。 我的環境是(根據代碼庫的要求):

  • 蟒蛇 2.7
  • CMake 2.8.10.1

提供的 CMakeLists.txt 如下所示:

cmake_minimum_required(VERSION 2.6)

project(KOL)

set (EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin)
#IF(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
set (CMAKE_INSTALL_PREFIX ${CMAKE_SOURCE_DIR})
#ENDIF(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)

#check if Eigen exists
find_path(EIGEN_PATH NAMES Eigen PATHS ${EIGEN_DIR} REQUIRED)
if (NOT EIGEN_DIR)
    message(FATAL_ERROR "Eigen is not found, please specify by: -DEIGEN_DIR=<eigen_path>")
endif (NOT EIGEN_DIR)


FILE(GLOB data_files src/data/*.h)
FILE(GLOB loss_files src/loss/*.h)
FILE(GLOB opti_files src/kernel/*.h)
FILE(GLOB comm_files src/common/*.h)

set (data_files ${data_files} 
    src/data/basic_io.cpp 
    )

include_directories(
    ${EIGEN_PATH}
    )

#set (data_files ${datafiles} 
#    src/data/basic_io.cpp 
#    src/data/zlib_io.cpp 
#    src/data/gzip_io.cpp
#    )
source_group("data" FILES ${data_files})
source_group("loss" FILES ${loss_files})
source_group("kernel" FILES ${opti_files})
source_group("common" FILES ${comm_files})

set (SRC_LIST
    ${data_files} ${loss_files} ${opti_files} ${comm_files}
    )

IF(CMAKE_COMPILER_IS_GNUCXX)
    SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-write-strings -O2 -s")
ENDIF(CMAKE_COMPILER_IS_GNUCXX)

add_executable(KOL src/Params.cpp src/Params.h 
    src/main.cpp ${SRC_LIST}) 
IF(UNIX)
    target_link_libraries(KOL pthread)
ENDIF(UNIX)

add_executable(Cacher src/data/Cacher.cpp ${data_files})
IF(UNIX)
    target_link_libraries(Cacher pthread)
ENDIF(UNIX)

install(TARGETS KOL Cacher
    DESTINATION .)

我的命令是: cmake -EIGEN_DIR=../Eigen -CMAKE_CXX_FLAGS='-std=c++0x -O3' ..

錯誤是:

loading initial cache file MAKE_CXX_FLAGS=-std=c++0x -O3
CMake Error: Error processing file:MAKE_CXX_FLAGS=-std=c++0x -O3
-- The C compiler identification is Clang 10.0.1
-- The CXX compiler identification is Clang 10.0.1
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
CMake Error at CMakeLists.txt:13 (message):
  Eigen is not found, please specify by: -DEIGEN_DIR=<eigen_path>

我的項目結構是這樣的:

--Master
 |--build
 |--Eigen
 |--CMakeLists.txt

我在build目錄中運行了命令。 它一直說EIGEN_PATH並且未找到Eigen

我試過-EIGEN_DIR=`pwd`/../Eigen 我也嘗試使用-DEIGEN_DIR但仍然遇到相同的錯誤。 請幫忙。

要通過 CMake 命令行指定緩存變量,請在變量名EIGEN_DIRCMAKE_CXX_FLAGS之前使用-D標志。 這是cmake命令行選項和標志的文檔。 因為這會創建緩存條目,請在運行命令之前嘗試清除 CMake 緩存,以清除其中保留的任何陳舊路徑。

另外,在包含CMAKE_CXX_FLAGS變量的標志時,請務必使用雙引號" ... "

cmake -DEIGEN_DIR=Eigen -DCMAKE_CXX_FLAGS="-std=c++0x -O3" ..

您應該從命令行使用-DEIGEN_DIR指定包含 FindEigen.cmake 文件的 Eigen 庫中的文件夾(使用 `find ../Eigen -name "*.CMake" 搜索它)。

請注意,包名稱應完全匹配(區分大小寫):

  • 查找模塊或配置腳本的名稱(FindPackageName.cmake 或 PackageNameConfig.cmake)
  • find_package調用中
  • PackageName_DIR 的名稱

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM