cmake设置交叉编译环境

cmake设置交叉编译环境

ID:8807511

大小:20.50 KB

页数:3页

时间:2018-04-08

cmake设置交叉编译环境_第1页
cmake设置交叉编译环境_第2页
cmake设置交叉编译环境_第3页
资源描述:

《cmake设置交叉编译环境》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、Cmake设置交叉编译环境[日期:2014-03-21]来源:Linux社区 作者:hhko12322[字体:大中小]我用的是合众达的dm6446.一 首先安装CMAKE下载cmake然后解压缩,进入解压缩后的目录,依次执行#./bootstrap#make&&makeinstall安装过程需要几分钟。二构建交叉编译的CMakeLists.txt说明: 设置交叉编译之前,必须在CMakeList.txt前面加上这样一句,这样CMake才会认为你是要交叉编译:SET(CMAKE_SYSTEM_NAMELinux) 在通知CMake要交叉编译以后,还要告诉CMake

2、到哪个路径下去找库文件,因为在交叉编译的时候CMake是不会自动去系统默认的目录找库文件和头文件的: SET(CMAKE_FIND_ROOT_PATH"编译器环境路径")SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAMNEVER)SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARYONLY)SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDEONLY)  其中的第一行,是告诉CMake查找的根目录是什么。后面分别是告诉CMake怎么查找编译时候的工具程序的位置、库的位置和头文件的位置。设置为N

3、EVER表示不查找,设置为ONLY表示只在CMAKE_FIND_ROOT_PATH设定的目录下查找,设置为BOTH(这是默认选项)表示既可以在系统目录下查找,也可以在CMAKE_FIND_ROOT_PATH下查找。因为咱们是交叉编译,所以后两项的设置了ONLY,对于编译时调用工具,一般来说是需要在系统目录下查找的,不过我不需要所以设置为NEVER。  然后,设置编译器: SET(CMAKE_C_COMPILER"编译器环境路径")  直接把编译器的路径设置过去就可以了,CMAKE_C_COMPILER是C语言编译器,CMAKE_CXX_COMPILE是C++语言

4、编译器。 所以在工程主CMakeLists.txt中首先加入如下:SET(CMAKE_SYSTEM_NAMELinux)SET(TOOLCHAIN_DIR"/opt/mv_pro_4.0/montavista/pro/devkit/arm/v5t_le")SET(CMAKE_FIND_ROOT_PATH${TOOLCHAIN_DIR})SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAMNEVER)SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARYONLY)SET(CMAKE_FIND_ROOT_PATH_MODE_

5、INCLUDEONLY)SET(CMAKE_C_COMPILER${TOOLCHAIN_DIR}/bin/arm_v5t_le-gcc)SET(CMAKE_CXX_COMPILER${TOOLCHAIN_DIR}/bin/arm_v5t_le-g++)三生成可调试版本的程序1使用CMAKE编译确实很方便。但CMAKE默认编译出来的程序不带有符号文件,用GDB无法调试。2要编译时产生符号文件供调试,调用CMAKE时,带上-DCMAKE_BUILD_TYPE=Debug例如:在build文件中输入:cmake..-DCMAKE_BUILD_TYPE=Debug这样产

6、生的makefile文件make生成的可执行文件就带有调试信息,供gdb和gdbserver使用了。*****另外有另一种更好的方法是在工程主CMakeLists.txt中的PROJECT语句后加入一句SET(CMAKE_BUILD_TYPEDebug)CMake中有一个变量CMAKE_BUILD_TYPE,可以的取值是DebugReleaseRelWithDebInfo和MinSizeRel。当这个变量值为Debug的时候,CMake会使用变量CMAKE_CXX_FLAGS_DEBUG和CMAKE_C_FLAGS_DEBUG中的字符串作为编译选项生成Makef

7、ile,当这个变量值为Release的时候,工程会使用变量CMAKE_CXX_FLAGS_RELEASE和CMAKE_C_FLAGS_RELEASE选项生成Makefile。CMake需要重点记住的命令和量一 MESSAGE命令MESSAGE(STATUS"THISISABINARYDIR"${HELLO_BINARY_DIR})STATUS表示将要输出前缀为“--”的信息,可以替换为FATAL_ERROR:立即终止CMake过程SEND_ERROR:产生错误,生成过程被跳过二IF与ELSEIF、ELSE、ENDIF示例:IF(表达式)ELSEIF(表达式)EL

8、SE(表达式)ENDIF

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。