cmake使用整理

常用选项:

  • -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。。















  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值