我有一组cpp文件,我想把它们直接编译成一个二进制文件,同时也要编译成一个共享库。
bin_PROGRAMS=mybin
lib_LTLIBRARIES=libmylib.la
COMMON_SOURCES=f1.cpp f2.cpp f3.cpp
mybin_SOURCES=main.cpp $(COMMON_SOURCES)
libmylib_la_SOURCES=$(COMMON_SOURCES)
运行此命令时,cpp文件将被编译两次,一次使用libtool和一次不使用,并且有时会引发libtool/automake的警告。
Makefile.am: object `f1.$(OBJEXT)' created both with libtool and without`
我尝试将COMMON_SOURCES放入.a文件中,但当我链接一个.a和.la时,libtool会抱怨它不可移植。
我需要的是像这样的东西
bin_LTPROGRAMS=mybin
但是那个并不存在。
编辑:澄清一下 - 我正在使用automake/autoconf。我展示的是我的automake Makefile.am的核心内容。
libmylib.so
,而不是将mybin
链接到这个共享对象,通过静态链接包含它的源代码呢? - Daniel Trebbien