CMake Error install TARGETS given unknownn argument "INCLUDES"

来源:互联网 发布:如何找到博客数据 编辑:程序博客网 时间:2024/05/22 13:10


在使用源码编译ceph的时候,碰到了下面的问题,把我整了好几天,让我特别沮丧。问题的背景是:

我使用如下的命令克隆了一份完整的ceph

 

```

git clonehttps://github.com/ceph/ceph.git

cd ceph

git submodule update --init--recursive

```

然后进行源码编译

 

```

./do_cmake.sh

cd build

make

```

make过程中便会遇到如下的问题:

 

 

----------

Performing configure step for‘rocksdb_ext’

--JNI library is disabled

CMake Error atCMakeLists.txt:658(install):

              install TARGETS given unknown argument"INCLUDES"

CMake Error atCMakeLists.txt:666(install):

              install TARGETS given unknown argument"INCLUDES".

 

 

--Configuring incomplete,errors occured!

make[2]:***[src/rocksdb_ext-prefix/src/rocksdb_ext-stamap/rocksdb_ext-config]错误1

make[1]:***[src/CMakeFiles/rocksdb_ext.dir/all]错误2

make:***[all]错误2

 

----------

我在编译的过程中怎么都无法跳过去这个步骤,然后我怀疑拉的代码不完整,所以重新拉了几分。

拉的ceph源码大小为329888k,即323M,更新完子模块[git submodule update --init --recursive],完整的ceph源码大小为1050164K,即1.1G左右。

每次都这样,这样我就知道ceph源码我克隆的是完整的。

然后通过阅读错误原因

              install TARGETS given unknown argument"INCLUDES"

未知参数,通过biying国际版查找错误,发现有可能是cmake的版本问题。在执行rocksdb配置步骤的脚本中src/rocksdb/CMakeLists.txt中,我们可以找到要求的版本号和错误发生的地点。

 

```

cmake_minimum_required(***VERSION2.8.11***)

project(rocksdb)

 

if(POLICY CMP0042)

 cmake_policy(SET CMP0042 NEW)

endif()

```

install(

   TARGETS ${ROCKSDB_STATIC_LIB}

   EXPORT RocksDBTargets

   COMPONENT devel

   ARCHIVE DESTINATION"${CMAKE_INSTALL_LIBDIR}"

   INCLUDES DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}"

 )

```

 install(

   TARGETS ${ROCKSDB_SHARED_LIB}

   EXPORT RocksDBTargets

   COMPONENT runtime

   RUNTIME DESTINATION"${CMAKE_INSTALL_BINDIR}"

   LIBRARY DESTINATION"${CMAKE_INSTALL_LIBDIR}"

   INCLUDES DESTINATION "${CMAKE_INSTLL_INCLUDE}"

 )

```

虽然该脚本要求的是cmake的版本是2.8.11,而我的编译环境也是2.8.11,但其实2.8.11是无法完成编译的,这样我们要通过下面的命令把现有的cmake2.8.11给卸载掉,然后安装cmake2.8.12.这样之后就能顺利编译完整ceph源码了。

阅读全文
0 0