Порядок установки библиотеки в automake

Когда я запускаю make distcheck, одна библиотека (в данном примере lib2) не устанавливается, поскольку для нее требуется lib1.

Есть ли способ указать порядок установки библиотеки?

Makefile.am:

lib_LTLIBRARIES = libTwo.la libOne.la

libOne_la_SOURCES = lib/one/example.cpp \
    lib/one/example.h 

libTwo_la_SOURCES = lib/two/Example2.cpp \
    lib/two/Example2.h 

libTwo_la_CPPFLAGS = -I$(srcdir)/lib/one
libTwo_la_LIBADD = libOne.la

Я использую:

  • RedHatEnterpriseServer 5.5
  • автоматизация (автоматизация GNU) 1.9.6

*Редактировать: * Вот что я вижу в выводе make distcheck.

/usr/bin/ld: cannot find -lOne
collect2: ld returned 1 exit status
libtool: install: error: relink `libTwo.la' with the above command before installing it
/bin/sh ./libtool --mode=install /usr/bin/install -c  'libOne.la' '/tmp/xx-x-yy-21346    /home/foo/commonlib-1.0/_inst/lib/libOne.la'

person adpda    schedule 16.04.2013    source источник
comment
Где находится lib1.la в вашем Makefile? Я этого не вижу. Все, что я вижу, это вещи для libOne.la и libTwo.la. Также вам нужно опубликовать, что входит в lib_LTLIBRARIES или что вы используете для установки.   -  person ldav1s    schedule 16.04.2013
comment
Спасибо @ldav1s. Я отредактировал соответственно, дайте мне знать, если я все еще не понимаю.   -  person adpda    schedule 17.04.2013
comment
Я как бы предполагаю, что -lone на самом деле -lOne в выводе make distcheck.   -  person ldav1s    schedule 17.04.2013
comment
Да, это правильно, и спасибо за вашу помощь.   -  person adpda    schedule 17.04.2013
comment
Хорошо, я отредактировал вопрос, чтобы исправить это.   -  person ldav1s    schedule 17.04.2013


Ответы (1)


Попробуйте обменять:

lib_LTLIBRARIES = libTwo.la libOne.la

за:

lib_LTLIBRARIES = libOne.la libTwo.la

IIRC, порядок в lib_LTLIBRARIES имеет значение во время установки.

person ldav1s    schedule 16.04.2013