【发布时间】:2014-09-25 07:58:58
【问题描述】:
我正在尝试创建一个 makefile 来在 linux 上构建一个 windows c++ 项目。我必须在不同的目录中编译 .cpp,才能使用对象创建一个库 .so。 为此,我创建了一个脚本来查找 .cpp 并将其放入文件中:
SOURCE= \
./Source/CHAINE.CPP\
./Source/CRACKCHN.CPP\
./Source/LISTEPTR.CPP\
现在我的 makefile 看起来像:(我知道我必须更改 $(TARGET) : $(OBJECT) 规则,但我认为这不是我的问题)
-include sources.mk
OBJECT = $(SOURCE:%.CPP=%.o)
#
$(TARGET) : $(OBJECT)
$(CC) $(CFLAGS) -o $@ $^ $(LIBS)
$(OBJECT) : $(SOURCE)
$(CC) $(CFLAG) $(PREPROC) -c $< -o $(OBJ_DIR)/$@ $(INCLUDE)
但是当我执行 make 命令时,所有对象都是使用第一个 .CPP(此处为 CHAINE.CPP)创建的:
g++ -Wall -D _MSC_VER -D _GPP -c Source/CHAINE.CPP -o ./Source/CHAINE.o
===
g++ -Wall -D _MSC_VER -D _GPP -c Source/CHAINE.CPP -o ./Source/CRACKCHN.o
===
g++ -Wall -D _MSC_VER -D _GPP -c Source/CHAINE.CPP -o ./Source/LISTEPTR.o
这是我第一次必须创建一个makefile,我有很多问题要解决,如果有人有解决方案?
【问题讨论】:
-
您想要一个
.cpp.o:规则,而不是一个明确声明您要从一个源文件生成所有目标文件的规则。 -
查看CMake 了解此类跨平台项目。