cmake:shell(bat,sh) 脚本方式生成Makefile

项目总体是用ant来控制编译的,但有一些用c/c++写的native的动态链接库是用cmake来生成Makefile文件编译的,为了统一用ant来控制所有代码的生成,就需要c/c++代码也能用ant脚本编译。
总体的过程是这样的:

步骤1.为了让ant能控制c/c++代码的编译,首先就需将cmake生成Makefile的过程脚本化。
步骤2.在ant脚本中调用步骤1中的脚本来实现Makefile生成
步骤3.在ant脚本中调用make实现c/c++代码编译

本文就先讲讲步骤1的做法,步骤2,步骤3参见《ant调用make实现Makefile编译》

步骤1

因为项目的设计是跨平台的,所以需要在windows和linux下分别实现不同的脚本

linux sh脚本实现,newprj.sh:

#!/bin/sh
GXX_PATH=
if [ `/usr/bin/g++ -dumpversion` != "5.2.0" ]
then
	if [ `/usr/local/bin/g++ -dumpversion` = "5.2.0" ]
	then
		GXX_PATH="-DCMAKE_CXX_COMPILER:FILEPATH=/usr/local/bin/g++ -DCMAKE_C_COMPILER:FILEPATH=/usr/local/bin/gcc -DCMAKE_BUILD_TYPE:STRING=RELEASE"
	else
		echo "g++ compiler required version 5.2.0"
		exit -1
	fi
fi
[ -z "$BUILD_FOLDER" ] && [ -n "$1" ] && BUILD_FOLDER="$1"
[ -z "$BUILD_FOLDER" ] && [ -z "$1" ] && BUILD_FOLDER="`cd "$(dirname "$0")"; pwd`.prj"
if [ -d $BUILD_FOLDER ]
then 
	rm -fr $BUILD_FOLDER/*
else 
	mkdir $BUILD_FOLDER
fi
pushd $BUILD_FOLDER
cmake "`dirs +1`" $GXX_PATH -G "Eclipse CDT4 - Unix Makefiles"
popd


windows bat脚本实现,newprj.bat:

ECHO OFF
SET work_folder=%BUILD_FOLDER%
SET source_folder=%cd%
REM
IF not "%work_folder%" =="" goto doNewPrj
IF not "%1" == "" work_folder="%1"
SET work_folder=%cd%.prj
:doNewPrj
IF exist "%work_folder%" rd /s /q "%work_folder%"
mkdir "%work_folder%"
pushd "%work_folder%"
cmake %source_folder% -G "Eclipse CDT4 - MinGW Makefiles"
popd
SET work_folder=
SET source_folder=

上面两个不同的脚本实现的功能类似,区别只是在不同的平台上运行。
这里要注意的是因为项目中的c/c++代码是用C++11写的,在CentOS6.5上使用gcc5.2.0编译器编译,CentOS6.5原生的gcc编译器版本是4.4.7不能满足编译要求,所以我升级了gcc编译器,安装在/usr/local/bin,而原来位于/usr/bin/的4.4.7版本的编译器还在。两个版本的编译器共存,所以 这里首先就要检测编译器版本,指定合适的编译器,参见我的另一篇博文《cmake 生成Makefile时指定c/c++编译器》

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

10km

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值