如何为Tcl包创建安装脚本

时间:2013-07-02 02:37:54

标签: installer installation tcl

我有一个Tcl包,包含几个模块,单元测试和样本;我希望分发。我搜索过,但没有找到任何简单/简单的方法来为它创建安装脚本。我查看了其他软件包,例如Tclx,看起来他们使用的是autotools - 一个不受影响的领域。那么,autotools是唯一的方法吗?我的目标平台主要是Mac和Linux,但未来可能会扩展到Windows。

1 个答案:

答案 0 :(得分:1)

似乎我必须创建自己的安装脚本。现在,它非常粗糙:将文件复制到某个位置。它现在对我有用。我将继续增强我的设置脚本以修复错误并在需要时添加功能。这是我的setup.tcl

#!/usr/bin/tclsh

# Crude setup script for my package

# ====================================================================== 
# Configurable items
# ====================================================================== 

# Install dir: $destLib/$packagename 
set destLib [file join ~ Library Tcl]
set packageName tcl_tools

# List of source/dest to install
set filesList {
    argparser.tcl
    dateutils.tcl
    htmlutils.tcl
    listutils.tcl
    pkgIndex.tcl

    samples/common.tcl
    samples/dateutils_sample.tcl
    samples/httputils_sample.tcl
    samples/parse_by_example_demo_missing_parameter.tcl
    samples/parse_by_example_demo.tcl
    samples/parse_simple_demo.tcl
}


# ====================================================================== 
# Determine the destination lib dir
# ====================================================================== 
if {[llength $::argv] == 1} {
    set destLib [lindex $::argv 0]
}

if {[lsearch $auto_path $destLib] == -1} {
    puts "ERROR: Invalid directory to install. Must be one of these:"
    puts "[join $auto_path \n]"
    exit 1
}

set destLib [file join $destLib $packageName]
file mkdir $destLib

# ====================================================================== 
# Install
# ====================================================================== 

foreach source $filesList {
    set dest [file join $destLib $source]
    puts "Installing $dest"

    # Create destination dir if needed
    set destDir [file dirname $dest]
    if {![file isdirectory $destDir]} { file mkdir $destDir }

    # Copy
    file copy $source $dest
}

puts "Done"