繁体   English   中英

如何在Makefile.am(auto make)中指定以在编译后将库目标文件(.lo)和目标文件(.o)保存在单独的文件夹中

[英]How to specify in Makefile.am(auto make) for saving library object files(.lo) and object files(.o) in separate folder after compilation

在Makefile.am中,我有:

lib_LTLIBRARIES = libmyproject.la
libmyproject_la_LDFLAGS = -shared
libmyproject_la_SOURCES = \
    sample1.cpp \
    sample1.h \
    sample2.cpp \
    sample2.h
AM_CPPFLAGS = \
    -Wall \
    -Wextra
INCLUDES = \
    $(OPENSSL_CFLAGS)
LIBS = \
    -L/usr/lib/openssl-1.0.0/ \
    -lssl
EXTRA_DIST = xxxxxx

这工作正常,并且我在同一路径中获取.lo.o文件。

如何在编译后将所有.lo.o文件移动到单独的子文件夹中?

一方面,您可以将普通的make规则混入Makefile.am

因此,将以下内容添加到Makefile.am应该可以完成您想要的操作:

.PHONY: copy_obj
# when building 'all', we *also* want the 'copy_obj' target
all: copy_obj
# but the 'copy_obj' target can only be executed once 'libmyproject.la' is done
copy_obj: libmyproject.la
      mkdir -p objdir
      cp *.lo *.o objdir

甚至:

.PHONY: copy_obj

all: copy_obj
copy_obj: $(libmyproject_la_OBJECT)
      mkdir -p objdir
      cp $^ objdir

但是真正的问题是:您为什么真正想要这样做? 您想完成什么?

您可以尝试使用VPATH构建。 为何需要将.lo.o文件放在其他位置有一些了解,将有助于回答您的问题。

与此不同的是DESTDIR安装,其中库等被复制而.o文件不被复制。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM