其实,每次碰到要安装一些软件啊,通常软件的源码都是c/c++,刚开始LZ不理解,从来都是跟着Readme.txt,一步步安装,如果说一帆风顺的把软件安装好了,也就罢了,很可能不会深究到底

cmake .
cmake ..
make all
make -j4
make install

上述列出来的到底是什么含义,直接机械式地先安装依赖库,经常用的也就是:

sudo apt-get install  #balala...一堆依赖库的名字

安装完依赖库,通常就会:

mkdir build
cd build
cmake ..
make
make install

简直是教科书般的标准流程,但是很多情况下,在camke这一块儿就会出错,LZ也是才接触这些,之前碰到很多的cmake错误东一个博客西一个博客一查,虽然问题解决了,但也没留下啥具体解决方案,或者报的错误是哪些,所以,LZ决定还是得新开一篇博客,把碰到的cmake错误汇总到一起。

哈哈,cmake的时候每次应该都最怕看见:

Configuring incomplete errors occurred!/(ㄒoㄒ)/~~**

**1.Cannot find source file. SRC_LIST. Tried extensions .c .C .c++ …add_executable called with incorrect number of arguments **

这个cmake找不到对应的的文件,LZ犯这个错误的原因是

#wrong one
add_executable(hello SRC_LIST)#right one
add_executable(hello ${SRC_LIST})

这是为了输出一个可执行文件,第一行的代码是在找文件名为SRC_LIST的文件,但实际上,这是LZ定义的一个变量,在cmake中引用定义的变量是要加${SRC_LIST}这个符号的。

**2.make: … empty variable name. stop. **

不存在空的变量名称。停止。。。

这是因为输入的make后面的变量并没有定义好,LZ犯错的原因如下:

#wrong one
make VERBOSE = 1#right one
make VERBOSE=1

小伙伴看出来哪里有不同的嘛?没错!等式左右LZ习惯性的打了空格,然后就光荣的报错了/(ㄒoㄒ)/~~

上面代码的意思是可以看到make构建的详细过程。

3.add_executable cannot create target “hello” because another target with the same name already exists. The existing target is an executable created in source directory

报错都是一长段,习惯就好,主要看具体报错的位置和错误类型,上面错误是LZ把两个可执行文件的文件名定义成一样的了,那是肯定得报错了,双胞胎还得有不同呢。。。

4.Parse error in command line argument -DCMAKE_INSTALL_PREFIX. Should be: VAR: type=value CMake Error: No cmake script provided. CMake Error: Problem processing arguments. Aborting

其实,这个错误是在定义安装目录的时候报错的,也就是使用-DCMAKE_INSTALL_PREFIX的时候出问题的,LZ把正确的和错误的还是都贴出来:

#wrong
cmake -DCMAKE_INSTALL_PREFIX = /tmp/t2/usr#right
cmake -DCMAKE_INSTALL_PREFIX=/tmp/t2/usr

又是老问题,等式左右两边加了空格,这真的是写代码的习惯性问题,所以这种编译错误还是对于LZ来说会经常碰到。。。

5.CMake Warning(dev) in CMakeLists.txt: No cmake_minimum_required command is present. A line of code such as cmake_minimum_required(VERSION 2.8) should be added at the top of the file

这其实都不能算是个error,只是一个warning,如果在有些IDE当中,如果你没有定义cmake的最低版本,它会帮你自动添加这行代码的:

cmake_minimum_required(VERSION 2.8)

cmake对于命令的大小写不敏感,但是对于变量的大小写是敏感的。还有一个问题,就是注意一下自己安装的cmake的版本,不要设置的最低版本比你安装的版本还要高,那就直接没办法编译了。

怎么查看你的cmake版本?

#在终端中输入
cmake --version#终端显示
cmake version 2.8.12.2

6.add_library cannot create target “hello” because another target with the same name already exists. The existing target is a shared library create in source directory

这是LZ在编译动态库和静态库出现的问题,如果直接把静态库和动态库直接使用相同的命名的话,就会报上述的错误。

#wrong
add_library(hello SHARED ${LIBHELLO_SRC})
add_library(hello STATIC ${LIBHELLO_SRC})#right(如果不要求静态库和动态库的名字相同的话)
add_library(hello SHARED ${LIBHELLO_SRC})
add_library(hello_static STATIC ${LIBHELLO_SRC})#right(如果需要两个库名字相同的话)
add_library(hello SHARED ${LIBHELLO_SRC})
add_library(hello STATIC ${LIBHELLO_SRC})
set_target_properties(hello_static PROPERTIES OUTPUT_NAME "hello")

7.CMAKE Error at lib/cmake_install.cmake:48(FILE): file INSTALL cannot copyfile, “source path” to “target path” Call stack(most recent call first):cmake_install.cmake:37(INCLUDE)

看到这个报错LZ还是会一脸懵逼的,因为只是报一个无法拷贝文件的问题,所以还是应该会想到是权限不够的问题,虽然有文章建议说安装软件的时候尽量不要用sudo但是,有些软件不用sudo根本没法安装,这其实还是蛮矛盾的存在,所以咯:

#报错的安装方法
make install#解决方案
sudo make install

如果报permiss denied感觉错误应该更好找。。。

8.Cannot specify link libraries for target “curltest” which is not built by the project

其实LZ犯这个错误也是很愚蠢的,LZ先写了target_link_libraries(curltest curl),然后定义的add_executable(curltest main.c),单纯的把顺序写反了,所以程序找不到curltest的定义。。。真是一点都不智能。还是没有养成写CMakeLists.txt的良好习惯。

9.Parse error.Function missing ending “)”. End of file reached

报的错误是解析错误,是因为圆括号不对称,导致直接程序找到文章结尾了,注意查找对应括号就行了。

其实还会遇到很多其它错误啦,只能遇到一个解决一个咯O(∩_∩)O

CMake error 合集(Configuring incomplete errors occurred!)相关推荐

  1. Configuring incomplete, errors occurred!

    (问题)主要报错: -- Configuring incomplete, errors occurred! CMake Error: CMAKE_C_COMPILER not set, after E ...

  2. 在centOS中安装MySQL时遇到Configuring incomplete,errors occurred该怎么办?

    Configuring incomplete,errors occurred 错误处理方法 今天笔者在安装数据库的时候不幸遇到了问题,如下图: 请参阅Cmake编译器的指定日志,,,,,,,,没事,就 ...

  3. CMake Error: CMake was unable to find a build program corresponding to Ninja.

    系统环境: $ lsb_release -a LSB Version: :base-4.0-amd64:base-4.0-noarch:core-4.0-amd64:core-4.0-noarch:g ...

  4. 【linux】CMake Error in CMakeLists.txt: No CMAKE_CXX_COMPILER could be found.

    – The C compiler identification is GNU 7.5.0 – The CXX compiler identification is unknown – Check fo ...

  5. mysql安装提示language错误_MySQL 安装 CMake Error CMAKE_CXX_COMPILER not set

    新装的机器Gnome-Ubuntu-13.10,编译安装mysql-5.6.14.tar.gz 命令 cmake -DCMAKE_INSTALL_PREFIX=/usr/local/database/ ...

  6. CMake Error at cmake/boost.cmake:76 (MESSAGE)

    在源码安装mysql5.7系列时,出现如下错误: 错误现象: CMake Error at cmake/boost.cmake:76 (MESSAGE): You can download it wi ...

  7. 报错:CMake Error at /usr/share/cmake-3.10/Modules/CMakeDetermineCCompiler.cmake:48 (message):

    虚拟机ubuntu系统下执行bash ./build-linux_RK3588.sh 报错:` ```python CMake Error: CMAKE_C_COMPILER not set, aft ...

  8. CMake Error: Could not find a package configuration file provided by “serial“

    CMakeLists.txt中添加了串口的package,如下: find_package(catkin REQUIRED COMPONENTS nav_msgs roscpp rospy seria ...

  9. CMake安装或CMake Error at CMakeLists

    CMake安装或CMake Error at CMakeLists 发生情景: 使用cmake命令安装软件时,报如下错误: CMake Error at CMakeLists.txt:4 (CMAKE ...

最新文章

  1. windows下qt5 kinect 2.0开发与环境配置
  2. python int函数详解,python int()函数
  3. android给后台传递json,将服务中的JSON数据发送到Android中的UI
  4. 编译内核,busybox,dropbear组装linux小系统
  5. 红黑树 —— 原理和算法详细介绍
  6. PAT乙级 1029 旧键盘
  7. 递归--递推之组合数
  8. 2013二级计算机c语言50,2013年计算机二级C语言课后模拟题五及答案
  9. 《恋上数据结构第1季》动态数组实现栈
  10. 如何拯救美团的“中年危机”?
  11. Xcode5 取消项目ARC,或者单个类ARC切换
  12. 【数据结构】顺序存储结构
  13. Matlab批量修改文件格式
  14. 电子计算机的诞生与发展
  15. wps可以登录网页版_wps网页版入口_WPS个人免费版_点点游
  16. 阿里云物联网平台搭建
  17. 【深度学习】ReID相关知识点解析(PCB、BoT、MGN)
  18. 聊聊什么是探索式测试
  19. Macbook m1安装java与IntelliJ
  20. IIS 超简单部署免费https Let's Encrypt

热门文章

  1. 个人bashrc配置
  2. 电脑经常卡是怎么回事?
  3. 零号元素安利英:20年零售老兵如何转战智慧零售
  4. 数据库查询语句SQL中like、%、-的区别
  5. 10分钟带你玩转openpyxl
  6. 唯品会Java开发工程师校招面经
  7. 荣耀magicwatch2鸿蒙,小猪搞机的评测 篇二十三:荣耀MagicWatch 2 上那些实用小功能盘点 功能还不是一般的丰富...
  8. 如何得到SignedXm验证Xml签名的日志文件
  9. 林俊杰豪掷78万加入「元宇宙炒房团」!元宇宙资产有多贵:1548万买土地,414万买虚拟游艇...
  10. 【JavaScript】日期格式化