编写makefile编译非本地目录文件
我想写一个makefile,使得在当前目录/home/user/a下编译另一个目录/home/user/b下的文件(多个),并将编译生成的.o文件放在当前目录/home/user/a下,咋办?由于项目限制,不允许在/home/user/b下放makefile。目前的困难是不知道如何由原文件生成目标文件。
EXEC = irvwtest
CC = g++ -g
CFLAGS = -ansi -pedantic -Wall
A_DIR =/home/user/a
B_DIR =/home/user/b
UT_SRC = a.cpp \
b.cpp
IRVW_SRC = $(B_DIR)/ir_vw_module_testcase.cpp \
$(B_DIR)/ir_vw_command_line_testcase.cpp
UT_OBJ = $(UT_SRC:%.cpp=%.o)
IRVW_OBJ_t := $(IRVW_SRC:f) #取列表中的文件名部分,但工作不正常
IRVW_OBJ = $(IRVW_OBJ_t:%.cpp=%.o)
all: $(EXEC)
$(EXEC): $(IRVW_OBJ) $(UT_OBJ)
$(CC) -o $(EXEC) $(^F)
.cpp.o:
$(CC) $(CFLAGS) -c $<
问题点数:100、回复次数:3Top
1 楼tb01412(tb)回复于 2006-03-03 20:59:20 得分 0
用脚本将另一个目录下的文件列表中的将要编译的C文件放入一个变量中,然后再在本地目录来编译,其中心意思如下:
gcc -c skfh/asdf/ere.c
这样不就编译另外的目录下的文件了吗????
你要做的事情就是充分利用脚本语言的功能来实现你的需求就行了!!!!!!Top
2 楼morpheus1977()回复于 2006-03-03 21:28:44 得分 0
根据
$(CC) $(CFLAGS) -c $< 生成.o
然后
$(CC) -o $(EXEC) $(^F) 生成最终文件。
使用了gmake的通配方法
Top
3 楼robinswan()回复于 2006-03-04 02:51:37 得分 0
不是这样的技巧也不会吧?!
ADIR=/home/user/a
BDIR=/home/user/b
CXX=g++
CXXFLAGS= -g
all:
CCXX $(CXXFLAGS) -o $(ADIR)/foo.o -c $(BDIR)/foo.cTop




