?? build-dll
字號:
#!/bin/bash# Wrapper script to build a DLL with gcc.# In addition to just build the DLL with gcc -shared, it also links in# a resource file containing an autoincremented build number, if# available. See the compile-resource script.# If version info (in the sense as used by libtool) is passed to this# script, the generated DLL's name is suffixed with the number of the# earliest implemented interface. Note that this suffix only is used# in forming the name of the DLL, it is not related (from Windows's# point of view) with the version resource inside the DLL. Also, note# that this suffix is *not* related to the release number of the# software package the library belongs to. (The version resource# inside the DLL usually *does* refer to the software package's# release number.) The DLL name also starts with "lib" in this case.# If no version info is passed, no "lib" prefix is used for the DLL name.# In addition to the DLL, also an import library is generated. The# import library name does not contain the interface number# suffix. This is intended to be similar in spirit to symlinking# libfoo.so to libfoo.so.2.0.1 on Unix, and then when building some# app, just specifying -lfoo.# In addition to the gcc import library, if a .def file is passed on# the command line, and the Microsoft linker is available, also a# Microsoft import library (foo.lib) is generated.# This script is usable at least with Cygwin 1.3.2 (the Cygwin bash is# used to interpret this script, plus it calls at least m4), and# gcc-2.95.3 and binutils-2.11.90 for Mingw (see www.mingw.org). For# other combinations, no idea.# The command line arguments are:# $1: library base name, for instance foo# $2: version info, like libtool's -version-info parameter. Consists of# one to three numbers, separated by a colon. See libtool documentation# for info. (Summary: The numbers are "current", "revision" and "age".)# The DLL name is suffixed with the value of current - age (age is always# less that or equal to current).# If you don't want any version suffix, pass - for this argument.# rest: def file (if used), object files, libraries and other switches# If called as # build-dll foo 5:4:3 foo.def foobar.o tem.o zap.o ...# this script would then generate libfoo-2.dll, libfoo.a, and foo.lib.# (The last one only if the Microsoft linker is available). The lib prefix # is used in order to be libtool compatible.library=$1; shiftversion=$1; shift;ldargs="$*"[ -z "$CC" ] && CC=gcccase "$CC" in gcc*) ;; *) echo build-dll only works with gcc exit 1 ;;esacdeffile=for F in $ldargs; do case $F in *.def) deffile=$F esacdonedllfile=$libraryif [ $version != '-' ]; then saved_IFS="$IFS" IFS=": " set $version 0 0 IFS="$saved_IFS" if [ $# -gt 6 ]; then echo version info should be one to three numbers separated by colon exit 1 fi current=$1 age=$2 dllfile=lib$library-$[current-age]fidllfile=$dllfile.dll# Check if we have a resource file for this DLL.# The Cygwin dirname fails on Windows-style path syntax, which $0# might be in some cases.uname |grep CYGWIN > /dev/nullif [ "$?" = 0 ]; then t=`cygpath -au $0` d=`dirname $t`else d=`dirname $0`firesfile=$library-win32res.o$d/compile-resource $library.rc $resfile && ldargs="$ldargs $resfile"# Build the DLL.$CC -shared -o $dllfile $ldargs -Wl,--out-implib,lib$library.a# Finally, also build import libraries for the Microsoft linker.if type -p lib.exe && [ -n "$deffile" ]; then lib -name:$dllfile -def:$deffile -out:$library.libfiexit 0
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -