我在我的src目錄下生成文件。 生成文件應建立數據結構,這是在數據結構/,然後遍歷所有cpp文件中的計算/並創建../bin/calculations相應的.so文件寫makefile來構建動態庫
我試過的語法如下:
DAST = DataStructures/
COMPS = computations/
BIN = ../bin/
OBJECTS = ${DAST}Atom.o ${DAST}Molecule.o
COMPILE = g++ -Wall -g -c -std=c++0x -I/usr/local/include/openbabel-2.0 LINK = g++ -Wall -g -std=c++0x ${OBJECTS} -lopenbabel -I/usr/local/include/openbabel-2.0
all: ${BIN}main ${DAST}Molecule.o ${DAST}Atom.o ${BIN}${COMPS}%.so
${BIN}main: ${OBJECTS} main.cpp
${LINK} main.cpp -o ${BIN}main
${DAST}Molecule.o: ${DAST}Molecule.h ${DAST}Molecule.cpp
${COMPILE} ${DAST}Molecule.cpp -o ${DAST}Molecule.o
${DAST}Atom.o: ${DAST}Atom.h ${DAST}Atom.cpp
${COMPILE} ${DAST}Atom.cpp -o ${DAST}Atom.o
${BIN}${COMPS}%.o: ${COMPS}%.cpp
gcc -Wall -fPIC -c -lopenbabel $< -I/usr/local/include/openbabel-2.0 -std=c++0x
${BIN}${COMPS}%.so: ${COMPS}%.o
gcc -shared -Wl,-soname,libcsmtest.so.1 -o libcsmtest.so [email protected]
clean:
rm -rf ${OBJECTS}
.PHONY: all clean
但它顯然是行不通的,因爲我得到下面的輸出:
[email protected]:~/csm/csm2/src$ make all
make: *** No rule to make target `../bin/computations/%.so', needed by 'all'. Stop.
感謝
我不使用Make,所以這不是你的問題的答案。但是,我建議學習使用CMake或Bjam這樣的跨平臺構建者是非常值得的投資。它們通常在語法上更容易,更易於安裝和維護,並且可以在Linux和Windows的世界中工作。 – Tom 2011-04-06 12:01:41