為了讓ant能執行make,還得用指令碼實現
linux sh指令碼實現,build.sh:
windows bat指令碼實現,build.bat:#!/bin/sh
export build_folder="`cd "$(dirname "$0")"; pwd`.prj"
## 判斷makefile是否存在,如果不存在,則呼叫newprj.sh生成makefile
if [ ! -r "$build_folder/makefile" ]
then
./newprj.sh
ficd
$build_folder
# 執行clean 清除已經有編譯生成的檔案
make clean
# make編譯
make
上面兩個不同的指令碼實現的功能類似,區別只是在不同的平台上執行,實現make clean和make的動作。echo off
set build_folder=%cd%.prj
ifnot
exist "%build_folder%/makefile" call newprj.bat
pushd "%build_folder%"
make clean
make
popd
有了步驟2中的build.sh/build.bat,就可以在ant指令碼中呼叫它們實現專案編譯了。
name="codemgr"
basedir="."
default="release">
environment="env" />
file="$/../ant/build-common-param.xml" />
property="is.windows">
family="windows" />
family="winnt" />
family="win9x" />
or>
condition>
property="is.linux">
family="unix" />
name="linux" />
and>
condition>
name="lib.dir"
value="$/../$.prj/lib"/>
file="$"
type="dir"
property="lib.dir.present"/>
name="release.linux"
description="release naitve(linux .so)"
if="is.linux">
message="not found: $"
unless="lib.dir.present"/>
executable="tar"
dir="$"
osfamily="unix">
line="-cf $/linux_x64/native.tar ."/>
exec>
target>
name="release.windows"
description="release native(windows .dll)"
if="is.windows">
message="not found: $"
unless="lib.dir.present"/>
todir="$/windows_x64">
dir="$" />
copy>
target>
name="clean">
executable="./newprj.sh"
dir="$"
osfamily="unix"/>
executable="newprj.bat"
dir="$"
osfamily="windows"/>
target>
name="build">
executable="./build.sh"
dir="$"
osfamily="unix"/>
executable="build.bat"
dir="$"
osfamily="windows"/>
target>
name="release"
depends="build,release.linux,release.windows"/>
name="all"
depends="clean,build,release"/>
project>
MAKE 巢狀執行make
在一些大的工程中,我們會把我們不同模組或是不同功能的原始檔放在不同的目錄中,我們可以在每個目錄中都書寫乙個該目錄的makefile,這有利於讓我們的makefile變得更加地簡潔,而不至於把所有的東西全部寫在乙個makefile中,這樣會很難維護我們的makefile,這個技術對於我們模組編譯和分段...
(一)make之make和makefile初識
1.1 make 和makefile 1.1.1 make make 是乙個應用程式 1.1.2 makefile makefile是乙個描述檔案 1.1.3 makefile本質 makefile實際就是乙個指令碼程式,類似於shell指令碼。由於 塊中沒有make的,所以用bash來代替make...
make相關命令
make 根據makefile編譯源 連線,生成目標檔案,可執行檔案。make clean 清除make命令所產生的object檔案 字尾為 o 的檔案 及可執行檔案。make install 將編譯成功的可執行檔案安裝到系統目錄中,一般為 usr local bin目錄。make dist 產生發...