Chinaunix首页 | 论坛 | 博客
  • 博客访问: 385768
  • 博文数量: 61
  • 博客积分: 4650
  • 博客等级: 上校
  • 技术积分: 786
  • 用 户 组: 普通用户
  • 注册时间: 2008-11-11 21:07
个人简介

少抱怨,多实干;

文章分类

全部博文(61)

文章存档

2017年(1)

2016年(13)

2015年(1)

2013年(2)

2011年(1)

2010年(3)

2009年(23)

2008年(17)

我的朋友

分类: 嵌入式

2016-02-26 15:54:33

此处以编译px4fmu-v4_default为例,编译环境为windows,eclipse编译。

点击(此处)折叠或打开

  1. px4fmu-v4_default:
  2.     $(call cmake-build,nuttx_px4fmu-v4_default)
这里会call cmake-build这个函数,并且将参数nuttx_px4fmu-v4_default传给该函数。

下面来看cmake-build函数的定义:

点击(此处)折叠或打开

  1. # Functions
  2. # --------------------------------------------------------------------
  3. # describe how to build a cmake config
  4. define cmake-build
  5. +@if [ $(PX4_CMAKE_GENERATOR) = "Ninja" ] && [ -e $(PWD)/build_$@/Makefile ]; then rm -rf $(PWD)/build_$@; fi
  6. +@if [ ! -e $(PWD)/build_$@/CMakeCache.txt ]; then git submodule update --init --recursive --force && mkdir -p $(PWD)/build_$@ && cd $(PWD)/build_$@ && cmake .. -G$(PX4_CMAKE_GENERATOR) -DCONFIG=$(1); fi
  7. +$(PX4_MAKE) -C $(PWD)/build_$@ $(PX4_MAKE_ARGS) $(ARGS)
  8. endef
首先,下面两个变量是这样定义的:
PX4_MAKE = make
PX4_MAKE_ARGS = -j$(j) --no-print-directory


点击(此处)折叠或打开

  1. +@if [ ! -e $(PWD)/build_$@/CMakeCache.txt ];......
这一行是来从网络上更新固件源码,可以不用更新,否则离线情况下可能会无法编译,所以,如果离线编译可以这样修改这一行:

点击(此处)折叠或打开

  1. #+@if [ ! -e $(PWD)/build_$@/CMakeCache.txt ]; then git submodule update --init --recursive --force fi
  2. +@mkdir -p $(PWD)/build_$@ && cd $(PWD)/build_$@ && cmake .. -G$(PX4_CMAKE_GENERATOR) -DCONFIG=$(1)

我们将其中两行的命令解析后如下:

点击(此处)折叠或打开

  1. +@echo "****CERIK....mkdir -p $(PWD)/build_$@ && cd $(PWD)/build_$@ && cmake .. -G$(PX4_CMAKE_GENERATOR) -DCONFIG=$(1)"
  2. +@echo "****CERIK....(PX4_MAKE) -C $(PWD)/build_$@ $(PX4_MAKE_ARGS) $(ARGS)"
解析后的结果如下:

点击(此处)折叠或打开

  1. ****CERIK....mkdir -p /D/PX4/Firmware/build_px4fmu-v4_default && cd /D/PX4/Firmware/build_px4fmu-v4_default && cmake .. -GMSYS Makefiles -DCONFIG=nuttx_px4fmu-v4_default
  2. ****CERIK....make -C /D/PX4/Firmware/build_px4fmu-v4_default -j4 --no-print-directory

所以,最终执行的命令如下:
cmake .. -GMSYS Makefiles -DCONFIG=nuttx_px4fmu-v4_default
make  -C  /D/PX4/Firmware/build_px4fmu-v4_default -j4 --no-print-directory





阅读(2247) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~