对于旧式Makefile我非常满意,现在正在寻找一个简单的libtool替代方案。我不想切换到automake,并且当我直接使用libtool时总是遇到问题。最新的问题是'unsupported hardcode properties',我对缺乏完整文档感到厌烦,因为它只是告诉我这次又出了什么问题...
我只想用正确的标志编译一堆.o文件,然后将它们链接成一个共享库,以便在尽可能多的平台上使用。是否有什么工具只能做到这一点,而不强制我同时切换所有其他工具呢?
对于旧式Makefile我非常满意,现在正在寻找一个简单的libtool替代方案。我不想切换到automake,并且当我直接使用libtool时总是遇到问题。最新的问题是'unsupported hardcode properties',我对缺乏完整文档感到厌烦,因为它只是告诉我这次又出了什么问题...
我只想用正确的标志编译一堆.o文件,然后将它们链接成一个共享库,以便在尽可能多的平台上使用。是否有什么工具只能做到这一点,而不强制我同时切换所有其他工具呢?
我不确定它是否适合你的工作流程,但我建议看看CMake。它适用于Windows、Linux和Mac,不应强制你更改任何其他工具。不过你需要自己评判其适用性。
slibtool(dl.midipix.org/slibtool,git://midipix.org/slibtool)是一个用C语言编写的libtool替代品。单个slibtool二进制文件旨在无缝支持本地和交叉构建,并且该实用程序还提供了一些附加功能(安装.la文件是可选的,可选的彩色注释等)。以下最小的纯makefile演示了如何使用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