z3-src-4.1.2.zip
問題は、使用中のすべてのテキストファイルがラインターミネーションのエンコードに「キャリッジリターン」(cr)と「ラインフィード」(lf)を使用していることだと思います。zipはWindowsマシンで作成されました。もう1つの問題は、「dos2unix」アプリケーションです。これは、windows/dosテキストファイルをunix/linux/osxテキストファイルに変換するアプリケーションです。とてもシンプルなアプリケーションです。cr/lfをlfに置き換えるだけです。Linuxでは、このアプリケーションは1つの引数を取ります。変更するファイル名です。
私は現在、この問題を回避する新しいビルドシステムに取り組んでいます。それまでの間、ここでいくつかの回避策を示します。
1)gitを使用してソースを取得します。gitはcr/lfvslfの問題を処理します。Z3を取得するためのコマンドは次のとおりです。
git clone https://git01.codeplex.com/z3
その場合、dos2unixを使用する必要はありません。したがって、Makefile.inの@ $(DOS2UNIX)行を削除できます。もう1つのオプションは、Makefile.inの先頭でDOS2UNIX = @D2U@をDOS2UNIX=touchに置き換えることです。
これらの変更後、OSXでコンパイルできるようになります。OSX10.7で正常にコンパイルしました。
2)「不安定な」ブランチを取得します。
http://z3.codeplex.com/SourceControl/changeset/view/946a06cddbe4
これは現在の「作業ブランチ」です。新しいビルドシステムが含まれています。準備はできていませんが、Z3実行可能ファイルを生成するには十分です。このブランチを使用してZ3をビルドする手順は次のとおりです
上記のページからコードをダウンロードします。または、gitを使用して「不安定な」ブランチを取得します。次に、実行します
autoconf
./configure
python scripts/mk_make.py
cd build
make
先週の金曜日にOSX10.7でコンパイルできました。
3).zipを保持しますが、すべてのテキストファイルを変換します。次のPythonスクリプトを使用して、新しいビルドシステムのすべてのファイルを変換しています。このPythonスクリプトをZ3ルートディレクトリで実行すると、すべてのファイルが変換されます。
import os
import glob
import re
import getopt
import sys
import shutil
def is_cr_lf(fname):
# Check whether text files use cr/lf
f = open(fname, 'r')
line = f.readline()
sz = len(line)
return sz >= 2 and line[sz-2] == '\r' and line[sz-1] == '\n'
# dos2unix in python
# cr/lf --> lf
def dos2unix(fname):
if is_cr_lf(fname):
fin = open(fname, 'r')
fname_new = '%s.new' % fname
fout = open(fname_new, 'w')
for line in fin:
line = line.rstrip('\r\n')
fout.write(line)
fout.write('\n')
fin.close()
fout.close()
shutil.move(fname_new, fname)
if is_verbose():
print "dos2unix '%s'" % fname
def dos2unix_tree_core(pattern, dir, files):
for filename in files:
if fnmatch(filename, pattern):
fname = os.path.join(dir, filename)
if not os.path.isdir(fname):
dos2unix(fname)
def dos2unix_tree():
os.path.walk('.', dos2unix_tree_core, '*')
dos2unix_tree()