成都创新互联公司坚持“要么做到,要么别承诺”的工作理念,服务领域包括:成都做网站、成都网站建设、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的喀左网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!
把你cmake的安装路径下的bin目录添加到PATH里面去。修改/etc/profile或者~/.bashrc
你好!看视频啊打字不易,采纳哦!
1.安装gcc等必备程序包,在cmake安装包的网站中选择binary distribution下的linux x86_64下的cmake-3.6.0-linux-x86 64.tar.gz压缩包,点击,下载。默认下载到了home/download2.把下载好的包复制到指定路径,比如/home/bnu,在当前文件夹中打开终端,输入3.tar zxvf cmake-3.6.0-linux-x86 64.tar.gz 在该目录下多了一个解压后的文件夹4.打开新的终端,./bootstrapmakemakeinstall5.此时会打开一个文件/root/.bashrc,找到export path=这些行,在这些行的下面另外添加一行,从而设置环境变量export path=$path:/home/bnu/cmake-3.6.0-linux-x86 64/bin输入完毕保存6.查看版本,测试是否安装成功:打开终端,输入cmake --version结果是:cmake version 3.6.0(安装cmake成功!)要知道,在根目录下安装cmake,那么不同用户都可以共享使用这个cmake.
下载源码包;将源码包放到任意目录;解压 tar xzvf cmake.tgz;进入到解压目录 依次执行 ./bootstrap
首先,我想说的是CMake的作用,每个编译器在调用头文件的时候都需要编译器配置好读取头文件(*.h)对应的(*.c||*.cpp)的路径,就像调用math.h你得告诉编译器对应的math.c要去什么地方寻找,但是新下载的OpenCV编译器是不知道相应的头文件还有lib文件要去哪里找的,所以程序猿们可以有以下两种方案:1. 每次创建一个工程,找到调用文件的配置选项,然后手动添加,告诉编译器cv.h在哪,各种库文件(*.lib)文件在哪,当然既然涉及到系统的问题,少不了要去环境变量配置一下系统设置,不过配置环境变量仅仅用一次就可以了。
2. 为了省去每次创建工程都需要手动配置路径的麻烦,用CMake可以将Opencv的相关文件在哪里“永久地”告诉编译器,当然代价就是……失败几率很大(反正我总是配不好,一步出问题就会很蛋疼)
环境变量(大小写不敏感,同名下的多路径之间用;隔开)path(只需添加下面中的一行,根据系统情况自行选择)d:\opencv2.3\build\x86\vc10\bin————————————————————opencvd:\opencv2.3\build————————————————————vs中的配置包含目录”中追加下面一行(包括所有分号,勿删vs原始数据):;d:\opencv2.3\build\include;d:\opencv2.3\build\include\opencv;d:\opencv2.3\build\include\opencv2“库目录”中追加下面一行(包括所有分号,勿删vs原始数据):;d:\opencv2.3\build\x86\vc10\lib“附加依赖库”中追加下面一行(包括所有分号,勿删vs原始数据):(根据具体的版本修改后面的数字);opencv_core230d.lib;opencv_highgui230d.lib;opencv_video230d.lib;opencv_ml230d.lib;opencv_legacy230d.lib;opencv_imgproc230d.lib字母d代表debug模式,不带d就是release模式,对于非企业性质的项目,也没太多区别,配好了debug模式自己玩就行了~
cmake交叉编译配置很多时候,我们在开发的时候是面对嵌入式平台,因此由于资源的限制需要用到相关的交叉编译。即在你host宿主机上要生成target目标机的程序。里面牵扯到相关头文件的切换和编译器的选择以及环境变量的改变等,我今天仅仅简单介绍下相关CMake在面对交叉编译的时候,需要做的一些准备工作。CMake给交叉编译预留了一个很好的变量CMAKE_TOOLCHAIN_FILE,它定义了一个文件的路径,这个文件即toolChain,里面set了一系列你需要改变的变量和属性,包括C_COMPILER,CXX_COMPILER,如果用Qt的话需要更改QT_QMAKE_EXECUTABLE以及如果用BOOST的话需要更改的BOOST_ROOT(具体查看相关Findxxx.cmake里面指定的路径)。CMake为了不让用户每次交叉编译都要重新输入这些命令,因此它带来toolChain机制,简而言之就是一个cmake脚本,内嵌了你需要改变以及需要set的所有交叉环境的设置。toolChain脚本中设置的几个重要变量 1.CMAKE_SYSTEM_NAME: 即你目标机target所在的操作系统名称,比如ARM或者Linux你就需要写"Linux",如果Windows平台你就写"Windows",如果你的嵌入式平台没有相关OS你即需要写成"Generic",只有当CMAKE_SYSTEM_NAME这个变量被设置了,CMake才认为此时正在交叉编译,它会额外设置一个变量CMAKE_CROSSCOMPILING为TRUE. 2. CMAKE_C_COMPILER: 顾名思义,即C语言编译器,这里可以将变量设置成完整路径或者文件名,设置成完整路径有一个好处就是CMake会去这个路径下去寻找编译相关的其他工具比如linker,binutils等,如果你写的文件名带有arm-elf等等前缀,CMake会识别到并且去寻找相关的交叉编译器。
3. CMAKE_CXX_COMPILER: 同上,此时代表的是C++编译器。
4. CMAKE_FIND_ROOT_PATH: 指定了一个或者多个优先于其他搜索路径的搜索路径。比如你设置了/opt/arm/,所有的Find_xxx.cmake都会优先根据这个路径下的/usr/lib,/lib等进行查找,然后才会去你自己的/usr/lib和/lib进行查找,如果你有一些库是不被包含在/opt/arm里面的,你也可以显示指定多个值给CMAKE_FIND_ROOT_PATH,比如set(CMAKE_FIND_ROOT_PATH /opt/arm /opt/inst)该变量能够有效地重新定位在给定位置下进行搜索的根路径。该变量默认为空。当使用交叉编译时,该变量十分有用:用该变量指向目标环境的根目录,然后CMake将会在那里查找。
5. CMAKE_FIND_ROOT_PATH_MODE_PROGRAM: 对FIND_PROGRAM()起作用,有三种取值,NEVER,ONLY,BOTH,第一个表示不在你CMAKE_FIND_ROOT_PATH下进行查找,第二个表示只在这个路径下查找,第三个表示先查找这个路径,再查找全局路径,对于这个变量来说,一般都是调用宿主机的程序,所以一般都设置成NEVER 6. CMAKE_FIND_ROOT_PATH_MODE_LIBRARY: 对FIND_LIBRARY()起作用,表示在链接的时候的库的相关选项,因此这里需要设置成ONLY来保证我们的库是在交叉环境中找的. 7. CMAKE_FIND_ROOT_PATH_MODE_INCLUDE: 对FIND_PATH()和FIND_FILE()起作用,一般来说也是ONLY,如果你想改变,一般也是在相关的FIND命令中增加option来改变局部设置,有NO_CMAKE_FIND_ROOT_PATH,ONLY_CMAKE_FIND_ROOT_PATH,BOTH_CMAKE_FIND_ROOT_PATH 8. BOOST_ROOT: 对于需要boost库的用户来说,相关的boost库路径配置也需要设置,因此这里的路径即ARM下的boost路径,里面有include和lib。
9. QT_QMAKE_EXECUTABLE: 对于Qt用户来说,需要更改相关的qmake命令切换成嵌入式版本,因此这里需要指定成相应的qmake路径(指定到qmake本身)toolChain demo# this is requiredSET(CMAKE_SYSTEM_NAME Linux)# specify the cross compilerSET(CMAKE_C_COMPILER /opt/arm/usr/bin/ppc_74xx-gcc)SET(CMAKE_CXX_COMPILER /opt/arm/usr/bin/ppc_74xx-g++)# where is the target environment SET(CMAKE_FIND_ROOT_PATH /opt/arm/ppc_74xx /home/rickk/arm_inst)# search for programs in the build host directories (not necessary)SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)# for libraries and headers in the target directoriesSET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)# configure Boost and QtSET(QT_QMAKE_EXECUTABLE /opt/qt-embedded/qmake)SET(BOOST_ROOT /opt/boost_arm)这样就完成了相关toolChain的编写,之后,你可以灵活的选择到底采用宿主机版本还是开发机版本,之间的区别仅仅是一条-DCMAKE_TOOLCHAIN_FILE=./toolChain.cmake,更爽的是,如果你有很多程序需要做转移,但目标平台是同一个,你仅仅需要写一份toolChain放在一个地方,就可以给所有工程使用。
CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程)。他能够输出各种各样的makefile或者project文件,能测试编译器所支持的C++特性,类似UNIX下的automake。只是 CMake 的组态档取名为 CmakeLists.txt。Cmake 并不直接建构出最终的软件,而是产生标准的建构档(如 Unix 的 Makefile 或 Windows Visual C++ 的 projects/workspaces),然后再依一般的建构方式使用。这使得熟悉某个集成开发环境(IDE)的开发者可以用标准的方式建构他的软件,这种可以使用各平台的原生建构系统的能力是 CMake 和 SCons 等其他类似系统的区别之处。CMake 可以编译源代码、制作程式库、产生适配器(wrapper)、还可以用任意的顺序建构执行档。CMake 支持 in-place 建构(二进档和源代码在同一个目录树中)和 out-of-place 建构(二进档在别的目录里),因此可以很容易从同一个源代码目录树中建构出多个二进档。CMake 也支持静态与动态程式库的建构。“CMake”这个名字是“cross platform make”的缩写。虽然名字中含有“make”,但是CMake和Unix上常见的“make”系统是分开的,而且更为高阶。下载:在安装metis-5.0时,安装说明中要求必须安装CMake2.8版本,下面是CMake的安装和使用方法,记录下来以便以后学习。在网址 http://www.cmake.org/ 下载你所需要的CMake源码包cmake-2.8.8.tar..gz(版本不同,压缩包后缀不同),分为Unix/linux版本 和 windows版本 。
1、安装有好几种安装CMake 的方法,因你所用的平台而异。
(1)从源码安装Windows在CMake 下载页面 上有已编译好的二进制包。它提供的是一个可执行的安装程序。你还可以下载源码包并从源码包编译CMake。CMake下载页面还提供了已释出的源码和访问CVS的指令。为了从源码树编译CMake,你必须先要安装最新的CMake二进制版本,因为要用它来编译源码树。
一旦装好了二进制版本的CMake,你就可以像编译其他项目一样使用CMake编译CMake了。一般来说,这意思是你要选择CMake源码目录作为源目录,然后再指定编译出来的可执行程序结果的位置。Linux, Mac OSX, UNIX & Cygwin在CMake 下载页面 上有许多UNIX平台上已经编译好的二进制包。下面有几种从源码树编译CMake的方法:解压:tar xvf cmake-2.8.8.tar.gz进入解压目录:cd cmake-2.8.8进行如下操作:(选择适合自己的操作步骤)如果还没有安装CMake,源码树中提供了一个 bootstrap 脚本:./bootstrapmakemake install(注:make install 一步是可选的,CMake 可以在编译目录下运行。)一个已经安装了的CMake也可以用于编译新版本的CMake:cmake .makemake install(注:make install 一步是可选的,CMake 可以在编译目录下运行。)在UNIX上,如果你不是使用的GNU C++编译器,你要告诉bootstrap 脚本你想用哪个编译器。这可以在运行configure命令前通过设置CC和CXX环境变量完成。例如,在一个带有7.3X编译器的SGI平台上,你可以像下面这样编译CMake:(setenv CXX CC; setenv CC cc; ./bootstrap)makemake install要查看bootstrap脚本的详细参数,请执行 ./bootstrap –help
(2)从二进制安装sudo apt-get install cmake2、cmake 运行
(1)运行cmake with GUI如果系统中有curses库,cmake将生成一个可执行文件ccmake,它是一个基于文本程序的终端,有点类似windows GUI。在源码目录中运行ccmake .,生成的二进制文件存放在源码目录下当然也可以在其他目录下运行ccmake,只是要指定你想编译的源码的路径ccmake的使用当我们在源码目录下运行ccmake . 时,终端将显示如下:当我们键入c时,ccmake将编译当我们键入方向键时,可以选择cache entry当我们键入enter时,可以编辑cache entry当我们键入g时,将生成Makefile,然后退出当我们键入h时,将弹出帮助文档当我们键入q时,将退出ccmake当我们键入t时,可以打开或关闭advanced cache entry
(2)运行cmake from the command line如果源码没有太多的选项(在CMakeCache.txt文件中),可以只用cmake .来产生Makefile。如果源码选项太多,比如VTK,可以把参数-i传递给cmake,如:cmake -i .,cmake将让你为每一个cache file文件中的选项指定一个值,也能让你增加新的选项到文件CMakeCache.txt中,或者使用ccmake,或者使用CMakeSetup。当然,也可以传递设置选项的参数给cmake,如:cmake -DVARIABLE:TYPE=VALUE .3、 CMake cachecmake第一次运行的时候,它将产生一个文件叫CMakeCache.txt,该文件可以被看作一个配置文件,它里面的内容就像传递给configure命令的参数集,CMake GUI可以帮你很容易修改它,当然也可以直接对该文件做修改;如果你的CMakeLists.txt文件做过较大幅度的修改,你需要从cache中删除相关的选项,如果你还没有手动编辑过cache文件,在你重新运行cmake之前需删除它。
4、 Cmake语法
(1)基本概念cmake使用Cmake dfjs;dfasfLists.txt文件,该文件用include或者add_subdirectory命令来增加额外的输入文件。注释行以#开头到该行结尾命令是由命令名,加括号,括号中的参数用空白隔开,它可以是内建的命令如add_library,或者用户定义的宏或函数所有的空格,包含空白符,空行,tabs,当然除了用来隔开参数的空白,都被忽略