ant呼叫make實現Makefile編譯

2021-07-09 06:30:43 字數 2333 閱讀 5988

為了讓ant能執行make,還得用指令碼實現

linux sh指令碼實現,build.sh:

#!/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

windows bat指令碼實現,build.bat:

echo off

set build_folder=%cd%.prj

ifnot

exist "%build_folder%/makefile" call newprj.bat

pushd "%build_folder%"

make clean

make

popd

上面兩個不同的指令碼實現的功能類似,區別只是在不同的平台上執行,實現make clean和make的動作。

有了步驟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 產生發...