Cmake 设置交叉编译环境
来源:互联网 发布:java linux服务器 下载 编辑:程序博客网 时间:2024/05/16 05:55
一 首先安装CMAKE
下载cmake 然后解压缩,进入解压缩后的目录,依次执行
# ./bootstrap# make && make install
安装过程需要几分钟。
二 构建交叉编译的CMakeLists.txt
说明:
设置交叉编译之前,必须在CMakeList.txt前面加上这样一句,这样CMake才会认为你是要交叉编译:
SET(CMAKE_SYSTEM_NAME Linux)
在通知CMake要交叉编译以后,还要告诉CMake到哪个路径下去找库文件,因为在交叉编译的时候CMake是不会自动去系统默认的目录找库文件和头文件的:
SET(CMAKE_FIND_ROOT_PATH "编译器环境路径")
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怎么查找编译时候的工具程序的位置、库的位置和头文件的位置。设置为NEVER表示不查找,设置为ONLY表示只在CMAKE_FIND_ROOT_PATH设定的目录下查找,设置为BOTH(这是默认选项)表示既可以在系统目录下查找,也可以在CMAKE_FIND_ROOT_PATH下查找。因为咱们是交叉编译,所以后两项的设置了ONLY,对于编译时调用工具,一般来说是需要在系统目录下查找的,不过我不需要所以设置为NEVER。
然后,设置编译器:
SET(CMAKE_C_COMPILER "编译器环境路径")
直接把编译器的路径设置过去就可以了,CMAKE_C_COMPILER是C语言编译器,CMAKE_CXX_COMPILE是C++语言编译器。
所以 在工程主CMakeLists.txt 中首先加入如下:
SET(CMAKE_SYSTEM_NAME Linux) 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_PROGRAM NEVER)SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)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这样产生的makefile文件make生成的可执行文件就带有调试信息,供gdb和gdbserver使用了。
*****另外有另一种更好的方法是在工程主CMakeLists.txt中的PROJECT语句后加入一句
SET(CMAKE_BUILD_TYPE Debug)CMake 中有一个变量 CMAKE_BUILD_TYPE ,可以的取值是 Debug Release RelWithDebInfo 和 MinSizeRel。当这个变量值为 Debug 的时候,CMake 会使用变量 CMAKE_CXX_FLAGS_DEBUG 和 CMAKE_C_FLAGS_DEBUG 中的字符串作为编译选项生成 Makefile ,当这个变量值为 Release 的时候,工程会使用变量 CMAKE_CXX_FLAGS_RELEASE 和 CMAKE_C_FLAGS_RELEASE 选项生成 Makefile。
- Cmake 设置交叉编译环境
- Cmake 设置交叉编译环境
- CMAKE交叉编译设置
- CMake的交叉编译
- cmake交叉编译
- cmake交叉编译
- CMake交叉编译配置
- CMake交叉编译
- CMake交叉编译配置
- CMAKE 交叉编译
- cmake交叉编译配置
- CMake交叉编译配置
- CMake交叉编译配置
- CMake交叉编译
- cmake 交叉编译
- cmake交叉编译
- CMake交叉编译
- CMake之交叉编译
- 前端开发中代码命名的整理
- Self-Study Machine Learning Projects
- 第三周作业-循环与判断语句(网络131 梁文俊
- C#;Cookies;例
- 怎样才能持之以恒
- Cmake 设置交叉编译环境
- 细说C/C++中的表达式运算顺序与求值顺序
- 机器学习中的相似性度量
- >/dev/null2>&1
- java 环境配置
- 设置AlertDialog的大小位置
- 2001年清华大学计算机研究生机试真题(第I套)之一
- 神经网络训练中的训练集、验证集以及测试集合
- 设置二进制