cmake使用整理
2016-05-05 20:04
197 查看
常用选项:
-G <generator-name> 指定makefile生成器的名字。例如:cmake -G "MinGW Makefiles";注意generator是大小写敏感的,即使是在windows下。generator所用的命令(gcc,cl等)最好已经设置在环境变量PATH中。有个例外就是生成visual studio的工程不必设置环境变量,只要安装了对应的vs,cmake可以自动找到。
-D<var>:<type>=<value>添加变量及值到CMakeCache.txt中。注意-D后面不能有空格,type为string时可省略。例如:cmake -DCMAKE_BUILD_TYPE:STRING=Debug。MinGW Generator默认生成CMAKE_BUILD_TYPE为空,即release;NMake
Generator默认生成CMAKE_BUILD_TYPE为Debug。
-U<globbing_expr> 删除CMakeCache.txt中的变量。注意-U后面不能有空格,支持globbing表达式,比如*,?等。例如:cmake -UCMAKE_BUILD_TYPE。
设置交叉编译之前,必须在CMakeList.txt前面加上这样一句,这样CMake才会认为你是要交叉编译:
SET(CMAKE_SYSTEM_NAME Linux)
其中Linux是要编译过去的平台,如果你是在Linux下交叉编译Window的东西,就要写成Windows了。我是在Linux x86编Linux arm11,所以直接写Linux就可以了。
在通知CMake要交叉编译以后,还要告诉CMake到哪个路径下去找库文件,因为在交叉编译的时候CMake是不会自动去系统默认的目录找库文件和头文件的:
SET(CMAKE_FIND_ROOT_PATH "/home/release/arm11/library/gnuarm-4.4.2/")
SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
CMake变量CMAKE_FIND_ROOT_PATH指定了一个或者多个优先于其他搜索路径的搜索路径。该变量能够有效地重新定位在给定位置下进行搜索的根路径。该变量默认为空。当使用交叉编译时,该变量十分有用:用该变量指向目标环境的根目录,然后CMake将会在那里查找。默认情况下,在CMAKE_FIND_ROOT_PATH中列出的路径会首先被搜索,然后是“非根”路径。该默认规则可以通过设置CMAKE_FIND_ROOT_PATH_MODE_LIBRARY做出调整。在每次调用该命令之前,都可以通过设置这个变量来手动覆盖默认行为。如果使用了NO_CMAKE_FIND_ROOT_PATH变量,那么只有重定位的路径会被搜索。
CMAKE_FIND_ROOT_PATH必须在CMakeList.txt中定义,不能在命令里使用-D定义
默认的搜索顺序的设计逻辑是按照使用时从最具体到最不具体。通过多次以NO_*选项调用find_program命令,可以覆盖工程的这个默认顺序:
find_library(<VAR> NAMES name PATHS paths... NO_DEFAULT_PATH) find_library(<VAR> NAMES name)
find_library第一个VAR需要预先定义一下,要不找不到定义-D。。
相关文章推荐
- 通读SDWebImage
- Basler SDK学习-pylon4在VS2013下的配置
- C语言中字符串的格式化
- 回调函数 与函数指针
- Invalid Swift Support / invalid implementation of swift
- 晶体三极管及其基本放大电路
- c语言
- BZOJ 1036 [ZJOI2008]树的统计Count (树链剖分)
- BestCoder Round #66 GTW likes math
- 生成全排列
- 线程组
- filter的执行顺序
- 判断点是否在多边形内
- Android APP安装后不在桌面显示图标的应用场景举例和实现方法
- Spark生态之Alluxio学习8---集群版搭建问题之集群无法全部启动
- 设置yum软件库轻松解决软件包安装问题
- 打造原生的图文混排控件
- 共同学习Java源代码--数据结构--开篇语
- Linux基础练习_多线程
- C++异常