如何更改 automake 安装 libtool 库的位置?
how to change where automake installs a libtool library?
我正在从事一个自由软件项目:https://github.com/ccr/ccr
在这个项目中,我正在构建一些共享对象库,它们实际上是 HDF5 的插件。
我不想在 /usr/local/lib 中安装这些库。我想将它们安装在一个特殊的 HDF5 插件目录中。
这是我现在拥有的:
AM_CPPFLAGS = -I$(HDF5_ROOT)/include -I$(BZ2_ROOT)/include
plugindir = /usr/local/hdf5/lib/plugin
# The libh5bz2 library for plugin module.
# Build it as shared library.
lib_LTLIBRARIES = libh5bz2.la
libh5bz2_la_SOURCES = H5Zbzip2.c
LDFLAGS = -L$(BZ2_ROOT)/lib
如何在 plugindir 中安装我的库?
前缀(lib_
)决定了安装路径($libdir
)。
您可以设置自己的前缀:
plugindir = ${prefix}/hdf5/lib/plugin
plugin_LTLIBRARIES = libh5bz2.la
旁注:不要在 Makefile 中硬编码完整路径。而是使用预定义的变量。例如而不是 /usr/local/hdf5/lib/plugin
使用类似 ${prefix}/hdf5/lib/plugin
的东西,以允许用户轻松更改实际安装路径..
定义变量'libdir'为一个字符串,它是一个路径。
该变量声明(向 automake 和 libtool)安装库的位置。
如果未定义,库将安装到常规位置。
# install into private dir "lib" near other plugin executables
libdir = $(plugindir)/lib
旁白:当您对 plugindir 的定义进行硬编码时,您可能会安装到一个奇怪的地方。
当你使用 ${prefix}
您可能会发现它安装到常规位置的子目录中:
plugindir = $(prefix)/hdf5/plugin/lib
然后可能会安装到 /usr/local/lib/hdf5/plugin/lib 哪个更传统?
此外,您可能需要在任何引用您的库的可执行文件或库上设置 rpath。
我正在从事一个自由软件项目:https://github.com/ccr/ccr
在这个项目中,我正在构建一些共享对象库,它们实际上是 HDF5 的插件。
我不想在 /usr/local/lib 中安装这些库。我想将它们安装在一个特殊的 HDF5 插件目录中。
这是我现在拥有的:
AM_CPPFLAGS = -I$(HDF5_ROOT)/include -I$(BZ2_ROOT)/include
plugindir = /usr/local/hdf5/lib/plugin
# The libh5bz2 library for plugin module.
# Build it as shared library.
lib_LTLIBRARIES = libh5bz2.la
libh5bz2_la_SOURCES = H5Zbzip2.c
LDFLAGS = -L$(BZ2_ROOT)/lib
如何在 plugindir 中安装我的库?
前缀(lib_
)决定了安装路径($libdir
)。
您可以设置自己的前缀:
plugindir = ${prefix}/hdf5/lib/plugin
plugin_LTLIBRARIES = libh5bz2.la
旁注:不要在 Makefile 中硬编码完整路径。而是使用预定义的变量。例如而不是 使用类似 /usr/local/hdf5/lib/plugin
${prefix}/hdf5/lib/plugin
的东西,以允许用户轻松更改实际安装路径..
定义变量'libdir'为一个字符串,它是一个路径。 该变量声明(向 automake 和 libtool)安装库的位置。 如果未定义,库将安装到常规位置。
# install into private dir "lib" near other plugin executables
libdir = $(plugindir)/lib
旁白:当您对 plugindir 的定义进行硬编码时,您可能会安装到一个奇怪的地方。 当你使用 ${prefix} 您可能会发现它安装到常规位置的子目录中:
plugindir = $(prefix)/hdf5/plugin/lib
然后可能会安装到 /usr/local/lib/hdf5/plugin/lib 哪个更传统?
此外,您可能需要在任何引用您的库的可执行文件或库上设置 rpath。