多谢楼下的提示,原来是64位系统下环境变量中包含(x86)的问题,所以下面的解决方法也是错的,看看就好了。
以前安装cmake的时候还会注意一下安装选项,后来就潜意识认为自己会了,检查的时候就不管这个了。
以前没有踩过的咋样的坑,以后算是知道了。
进行Pixhawk的开发好久了,最早的时候使用的是Windows,各种问题,后来转到Ubuntu下进行开发,十分顺利。
Ubuntu开发环境使用起来多有不便,还是需要使用Windows完成很多工作,再次搭建PX4开发环境竟然出现了一点问题,大致是cmake没有安装。
作为新开博客的第一篇文章,就让我们来解决这个问题吧。
按照官方的说明安装
APM:http://ardupilot.org/dev/docs/building-px4-with-make.html
PX4:http://dev.px4.io/starting-installing-windows.html
两个都可以,但是APM的更详细一点,只不过当前(2016.9)APM使用的还是make,px4使用的是cmake,所以按照px4的教程更合适。
按照官方的说法
Warning Although a Windows toolchain is available,its not officially supported and we discourage its use. It isunbearably slow during Firmware compilation and does not support new boards like Snapdragon Flight. It also cannot run the standard robotics software packages many developers use to prototype computer vision and navigation. Before starting to develop on Windows, consider installing a dual-boot environment with Ubuntu.
并不是特别支持Windows下的开发,但是既然需要,还是试着解决这个问题。
其实需要的就是
直接在eclipse中导入px4的project,之后使用make px4fmu-v2_default 编译,但是出现问题
大致就是提示cmake没有安装
Tools/check_cmake.sh: line 2: cmake: command not found
Makefile:44: Not a valid CMake version or CMake not installed.
提示的是在linux下使用apt-get来安装,实际使用中确实是这样的,但是windows下只能到官网下载
来到https://cmake.org/download/
问题来了,有两个版本,我使用的系统为64位的win10,既然有64位的肯定安装64位的。
但是记得之前曾经在Windows上顺利编译,当时使用的x86的cmake,不管了,问题实质应该是一样的。
为了简化问题,eclipse下编译会发生不可预知的问题,那么就使用命令行来编译,简化问题。
同样的问题出现了,依然提示没有cmake。
那么分析问题,这个cmake没有是一类通用问题,开源飞控毕竟是一个小的领域,所出现的问题远远无法与其他诸如c++相比,所以搜寻的思路是查找cmake相关问题。
但是分析这个问题先来看看问题他提示的地方 Tools/check_cmake.sh: line 2: cmake: command not found
打开源代码找到这个地方
#!/bin/bash
cmake_ver=`cmake --version`
if [[ $cmake_ver == "" ]]
then
exit 1;
fi
if [[ $cmake_ver == *" 2.8"* ]] || [[ $cmake_ver == *" 2.9"* ]] || [[ $cmake_ver == *" 3.0"* ]] || [[ $cmake_ver == *" 3.1"* ]]
then
exit 1;
fi
exit 0;
使用cmake --version来获取cmake版本号,由于这个是使用的make编译,所以期望在命令行下面可以获取这个命令
但是如下
即使windows CMD下也是如此
所以就是这个命令无法执行。
再来看看编译的makefile是怎样的
调用这个shell脚本,但是对于这个toolchain的不够了解导致并不知道实际的调用过程是怎样的。
根据其他人和之前的经验,使用这个是可以编译的,那么我这个就是一个特殊情况,是因为这台电脑中其他程序修改了某些变量导致这边无法正确调用系统变量,那么这个变量是什么呢?也许换一台电脑就可以了。但是不知道
查找toolchain文件夹下面的make文件,make是一直都在的,但是cmake是没有的,所以怎么调用呢?
那就要使用系统变量来调用
很显然环境变量中是有cmake的选项的,但是为什么没有正确调用cmake,或者问题就转化为怎么使用命令行调用cmake.
到群里面询问了一下:问题在于是否以管理员身份安装软件。
于是重新以管理员身份安装cmake
使用cmake 3.6 x64的结果
不行!
使用cmake 3.6 x86
依然不行!
按照linux的说法使用保险的3.4版本 cmake-3.4.2-win32-x86.exe
奇迹出现了!!!
eclipse下也是如此
是的就是cmake版本问题,甚至都与是否以管理员身份安装无关。
3.4可以,那么3.5是否可以呢?我们来试试。
安装的时候我们看到这个要求卸载cmake 3.4以前,再看官方下载页面的说明
我们都知道这个toolchain是好几年以前的了,所以最新的不支持很正常,而3.2等版本肯定是可以的,既然我们不需要使用最新的cmake特性,何必尝试最新的版本呢。
Windows下受限于这个版本的问题,但是linux下就不存在这个问题,可是apt-get安装最新的版本。
总结起来:就是是因为最新的cmake版本和toolchain不兼容,那么使用cmake 3.4就可以了。
下载地址为 https://cmake.org/files/v3.4/
https://cmake.org/files/v3.4/cmake-3.4.2-win32-x86.exe