在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
文件移至单独的子文件夹?
答案 0 :(得分:0)
首先,您可以将普通的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
但真正的问题是:为什么你真的想要这样做吗?你想做什么?
答案 1 :(得分:0)
您可以尝试VPATH版本。了解@implementation CustomLayout
-(void)prepareLayout{
[super prepareLayout];
// [self invalidateLayout];
if(self.collectionView){
CGSize newItemSize=self.itemSize;
// Number of items per row
int itemsPerRow=3;
float totalSpacing=self.minimumLineSpacing*(itemsPerRow-1);
newItemSize.width=(self.collectionView.bounds.size.width -totalSpacing)/itemsPerRow;
if(self.itemSize.height>0){
float itemAspectRatio=self.itemSize.width/self.itemSize.height;
newItemSize.height=newItemSize.width/itemAspectRatio;
}
[self setItemSize:newItemSize];
}
}
@end
和.lo
文件为何需要在其他地方进行操作有助于回答您的问题。
对此有一些不同的变化是DESTDIR安装,其中libs等被复制而.o
文件没有。