我熟悉如何创建基本的 makefile,但我正在尝试从我当前目录和所有子目录中的所有 .cpp 文件创建一个 .dylib(如 .dll),我在失去我应该做的。这是我当前的 makefile,它只为 2 个 .cpp 文件制作 .dylib。我不知道如何在没有硬编码的情况下对所有 .cpp 文件执行此操作。我的 makefile 应该是什么样子?
# Define a variable for classpath
CLASS_PATH = ../bin
# Define a virtual path for .class in the bin directory
vpath %.class $(CLASS_PATH)
all: libhpaprogram.dylib
# $@ matches the target, $< matches the first dependancy
libhpaprogram.dylib:
cc -v -c -stdlib=libstdc++ -fPIC -I/System/Library/Frameworks/JavaVM.framework/Versions/A/Headers/ HPAProgram.cpp -o libhpaprogram.o
cc -v -c -stdlib=libstdc++ -fPIC -I/System/Library/Frameworks/JavaVM.framework/Versions/A/Headers/ DCDTWrapper.cpp -o DCDTWrapper.o
libtool -dynamic -lSystem libhpaprogram.o DCDTWrapper.o -o libhpaprogram.dylib
HPAProgram.h : HPAProgram.class
javah -classpath $(CLASS_PATH) $*
clean:
rm HPAProgram.h libhpaprogram.o libhpaprogram.dylib
最佳答案
您的第一个选择是使用 make wildcard patterns
第二种选择是使用跨平台工具,如 CMake让它为你生成 Makefile。因此,您将从 [大部分] 血淋淋的细节中解脱出来,例如确切的编译器和链接器标志等。CMake 甚至支持生成 MS Visual Studio 项目:)
关于c++ - Makefile 编译当前目录和所有子目录中的所有 .cpp 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21613888/