シンプルなlibtoolの代替?
-
24-09-2019 - |
質問
は完全に古いスタイルのMakefileに満足している、私は、libtoolの簡単な代替を探しています。私はautomakeのに切り替えるにはしたくない、と私はそれを直接使用しようとすると、私は、libtoolの問題に実行し続けます。最新のものは、「サポートされていない打ちのプロパティ」であり、そして私はこの時間が...
間違っているものを私に伝えるだけという完全なドキュメントの欠如にうんざり取得しています私は右の旗と.oファイルの束をコンパイルして、共有ライブラリにそれらをリンクし、そのようなことはできるだけ多くのプラットフォームとしてで動作することにしたいです。そして同時に、私の他のすべてのツールを切り替えるために私を強制していないだけというんがそこに何がある?
解決
あります jlibtool に(javaのとは何の関係もない)。
これは、Cで書かれていて、ちょうどあなたの元にバンドルすることができます。
もともとはのApacheプロジェクトのだったが、誰がそれを働いていました2004年
のまわりでそれを放棄したのにあるようですこれは、コードを近代化し、いくつかのやっかいな問題を修正しFreeRADIUSのプロジェクトのメンテナアランDekok、によって引き継がれました。我々は、すべてのビルド時のリンクを行うにはFreeRADIUSのプロジェクト(> = 3.0.0)のためにそれを使用します。
他のヒント
私必ずそれはあなたのワークフロー情報に合うだろうが、私は CMakeのを見てお勧めされていない場合。これは、Windows、Linux、およびMac上で動作し、他のツールのいずれかを変更することを強制すべきではありません。あなたはかかわらず、その適合性を自分で判断する必要があります。
Milliams'の答えにコメントであなたの説明を考えると、
「私は共有ライブラリで使用するためにこれらのn個のファイルをコンパイルできるように、私のコンパイラフラグを与え、その後、それらを一緒にリンクするために私に命令を与える」、私はちょうど私が言うことを1つのツールたいです
、その後のlibtoolはよく仕事のための最も簡単なツールとなることがあります。私は他の選択肢を知ってます。
あなたはプレーンなメイクファイルでのlibtoolを使用するためのドキュメントは事実上存在しないですが、libtoolが確かにautomakeのに切り替えるには、あなたを必要としないことを右です。クロスプラットフォームのライブラリは困難であり、あなたが彼らのために支払う必要が価格は、libtoolです。 (それとも割引価格はlibtoolの+ automakeを+ autoconfのかCMakeのかジャムです。)
slibtool(dl.midipix.org/slibtool、Gitの://midipix.org/slibtool)は、libtoolのドロップイン置換、シームレスネイティブおよびクロスビルドの両方をサポートするC. A単slibtoolバイナリ目的で書かれていますそしてユーティリティは、いくつかの追加機能(.laファイルのインストールは任意であり、任意色分け注釈など)を提供します。以下の最小限の無地のメイクファイルは、(クロス)slibtoolを使用してライブラリを構築する方法を示します。
CC = cc
LIBTOOL = slibtool
DESTDIR = destdir
all: libfoo.la
a.lo:
$(LIBTOOL) --mode=compile --tag=CC $(CC) -c a.c
libfoo.la: a.lo
$(LIBTOOL) --mode=link --tag=CC $(CC) -o libfoo.la -rpath /lib
install: all
mkdir -p destdir
$(LIBTOOL) --mode=install cp libfoo.la $(DESTDIR)
# the -rpath argument is required for semantic compatibility with libtool.
ネイティブビルド、デフォルト(共有ライブラリと静的ライブラリの両方)
$ make
$ make install
ネイティブビルド、共有ライブラリのみ
$ make LIBTOOL=slibtool-shared
$ make install
ネイティブビルド、静的ライブラリのみ
$ make LIBTOOL=slibtool-static
$ make install
クロスビルド、デフォルトの
$ make CC=some-target-tuple-gcc
$ make install
クロスビルド、デフォルト、色
の多くが付いています$ make LIBTOOL=dlibtool CC=some-target-tuple-gcc
$ make install