src 디렉토리에 makefile이 있습니다. 메이크는 ../bin/calculations에 해당하는 .so 파일을 데이터 구조체 /에있는 데이터 구조를 구축 한 다음 계산에 모든 CPP 파일을 반복/및 작성해야 동적 라이브러리를 빌드하기위한 메이크 파일 작성
나는 다음과 같은 구문을 시도 :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