- 疎行列情報を記録したファイルを読み込んで、それをハンドリングする、というスタイルを基本にしたい
- ディレクトリ hogeDirを作り、その下に
- 以下に示す Makefileを置く。このMakefileは以下に示すディレクトリ構造・ファイル配置で動くように作ってある
- ディレクトリ構造
- src, library, obj, matrixの4ディレクトリを置く
- srcディレクトリは、hoge.cppを全部置く。main.cppも。拡張子はcpp
- libraryディレクトリは、hoge.hを全部置く。
- objディレクトリはmakeによってできるhoge.oが置かれる
- matrixは疎行列ファイルを置いておく場所(この場所はコンパイルとは関係ないので、ファイル読み込みのときにパスを教えて読み込ませればよいので、変更してもよい)
- Makefile
- 外微分ライブラリ(DDG)で使われているMakefileをほぼ踏襲(こちら)
- 前半でインクルードパス、ライブラリパス、使用ライブラリを指定
- 後半で、全オブジェクトファイルと指定ライブラリを使ってsstestなる実行可能ファイルを作れ、と命令しつつ、すべてのオブジェクトファイルを対応するcppから作る
- 最後に不要な中間ファイルを削除したりする
##########################################################################################
# Specify library locations here (add or remove "#" marks to comment/uncomment lines for your platform)
# Mac OS X
# DDG_INCLUDE_PATH =
# DDG_LIBRARY_PATH =
# DDG_BLAS_LIBS = -framework Accelerate
# DDG_SUITESPARSE_LIBS = -lspqr -lumfpack -lcholmod -lmetis -lcolamd -lccolamd -lcamd -lamd -ltbb -lm -lsuitesparseconfig
# DDG_OPENGL_LIBS = -framework OpenGL -framework GLUT
# Linux
DDG_INCLUDE_PATH = -I/usr/include -I/usr/local/include -I/usr/include/suitesparse
DDG_LIBRARY_PATH = -L/usr/lib -L/usr/local/lib
# DDG_BLAS_LIBS = -llapack -lblas -lgfortran
# DDG_SUITESPARSE_LIBS = -lspqr -lcholmod -lmetis -lcolamd -lccolamd -lcamd -lamd -lm
DDG_SUITESPARSE_LIBS = -lspqr -lcholmod -lumfpack -lm #-lsuitesparseconfig
# DDG_OPENGL_LIBS = -lglut -lGL -lGLU -lX11
DDG_OPENGL_LIBS = -lglut -lGL -lGLU
# # Windows / Cygwin
# DDG_INCLUDE_PATH = -I/usr/include/opengl -I/usr/include/suitesparse
# DDG_LIBRARY_PATH = -L/usr/lib/w32api -L/usr/lib/suitesparse
# DDG_BLAS_LIBS = -llapack -lblas
# DDG_SUITESPARSE_LIBS = -lspqr -lcholmod -lcolamd -lccolamd -lcamd -lamd -lm
# DDG_OPENGL_LIBS = -lglut32 -lglu32 -lopengl32
########################################################################################
TARGET = sstest
CC = g++
LD = g++
CFLAGS = -O3 -Wall -Werror -ansi -pedantic $(DDG_INCLUDE_PATH) -I./include -I./src -DGL_GLEXT_PROTOTYPES
LFLAGS = -O3 -Wall -Werror -ansi -pedantic $(DDG_LIBRARY_PATH)
LIBS = $(DDG_OPENGL_LIBS) $(DDG_SUITESPARSE_LIBS) $(DDG_BLAS_LIBS)
########################################################################################
## !! Do not edit below this line
HEADERS := $(wildcard include/*.h)
SOURCES := $(wildcard src/*.cpp)
OBJECTS := $(addprefix obj/,$(notdir $(SOURCES:.cpp=.o)))
all: $(TARGET)
$(TARGET): $(OBJECTS)
$(LD) $(OBJECTS) -o $(TARGET) $(CFLAGS) $(LFLAGS) $(LIBS)
obj/%.o: src/%.cpp ${HEADERS}
$(CC) -c $< -o $@ $(CFLAGS)
clean:
rm -f $(OBJECTS)
rm -f $(TARGET)
rm -f $(TARGET).exe