moving to cmake

This commit is contained in:
2016-02-07 22:55:15 +01:00
parent bec7a4f3ae
commit b436baafce
7 changed files with 93 additions and 88 deletions

69
CMakeLists.txt Normal file
View File

@@ -0,0 +1,69 @@
cmake_minimum_required(VERSION 3.2)
project(NeuralNetwork CXX)
OPTION(BUILD_SHARED_LIBS "Build also shared library." ON)
OPTION(USE_SSE "IF sse should be used." ON)
OPTION(USE_SSE2 "IF only sse2 should be used." OFF)
OPTION(ENABLE_TESTS "enables tests" ON)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -pedantic -Weffc++ -Wshadow -Wstrict-aliasing -ansi -Woverloaded-virtual -Wdelete-non-virtual-dtor -Wno-unused-function")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} --std=c++14")
#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC -pthread")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=native -mtune=native -O3")
if(USE_SSE)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -msse4.2 -DUSE_SSE")
if(USE_SSE2)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DUSE_SSE2")
endif(USE_SSE2)
endif(USE_SSE)
include_directories(./include/)
set (LIBRARY_SOURCES
include/NeuralNetwork/ActivationFunction/ActivationFunction.h
include/NeuralNetwork/ActivationFunction/Heaviside.h
include/NeuralNetwork/ActivationFunction/HyperbolicTangent.h
include/NeuralNetwork/ActivationFunction/Linear.h
include/NeuralNetwork/ActivationFunction/Sigmoid.h
include/NeuralNetwork/ActivationFunction/StreamingActivationFunction.h
include/NeuralNetwork/BasisFunction/BasisFunction.h
include/NeuralNetwork/BasisFunction/Linear.h
include/NeuralNetwork/BasisFunction/Product.h
include/NeuralNetwork/BasisFunction/Radial.h
include/NeuralNetwork/BasisFunction/StreamingBasisFunction.h
include/NeuralNetwork/FeedForward/Layer.h
include/NeuralNetwork/FeedForward/Network.h
include/NeuralNetwork/Recurrent/Network.h
include/NeuralNetwork/Network.h
include/NeuralNetwork/Neuron.h
include/NeuralNetwork/Stringifiable.h
include/NeuralNetwork/Stringifiable.h
src/NeuralNetwork/Learning/BackPropagation.cpp include/NeuralNetwork/Learning/BackPropagation.h
include/sse_mathfun.h
src/NeuralNetwork/FeedForward/Layer.cpp
src/NeuralNetwork/FeedForward/Network.cpp
src/NeuralNetwork/Recurrent/Network.cpp
src/NeuralNetwork/Neuron.cpp
src/sse_mathfun.cpp
)
add_library(NeuralNetwork STATIC ${LIBRARY_SOURCES})
IF(BUILD_SHARED_LIBS)
add_library(NeuralNetworkShared SHARED ${LIBRARY_SOURCES})
set_target_properties(NeuralNetworkShared PROPERTIES OUTPUT_NAME NeuralNetwork)
ENDIF(BUILD_SHARED_LIBS)
IF(ENABLE_TESTS)
add_subdirectory (tests)
enable_testing()
add_test(activation tests/backpropagation)
add_test(backpropagation tests/backpropagation)
add_test(basis tests/basis)
add_test(feedforward tests/feedforward)
add_test(recurrent tests/recurrent)
ENDIF(ENABLE_TESTS)

View File

@@ -1,30 +1,6 @@
include ./Makefile.const include ./Makefile.const
.PHONY: all .PHONY: documentation clean
all:|pre libs
pre:
@mkdir -p lib
test: all
make -C tests
install: all
@mkdir -p build/lib
@cp lib/*.so build/lib/
libs: | nn_build lib/NeuralNetwork.a lib/NeuralNetwork.so
lib/NeuralNetwork.so: ./src/NeuralNetwork.so
cp ./src/NeuralNetwork.so ./lib/
lib/NeuralNetwork.a: ./src/NeuralNetwork.a
cp ./src/NeuralNetwork.a ./lib/
cp ./src/NeuralNetwork.nm ./lib/
nn_build:
@make -C src/
documentation: documentation:
doxygen doxygen

View File

@@ -4,7 +4,7 @@ CXXFLAGS+= -std=c++14
#-fprefetch-loop-arrays #-fprefetch-loop-arrays
CXXFLAGS+= -pg -fPIC CXXFLAGS+= -pg -fPIC
CXXFLAGS+= -g CXXFLAGS+= -g
CXXFLAGS+= -fPIC -pthread CXXFLAGS+= -fPIC -pthread y
#CXXFLAGS+= -DUSE_SSE2 #CXXFLAGS+= -DUSE_SSE2
OPTIMALIZATION = -O3 -march=native -mtune=native OPTIMALIZATION = -O3 -march=native -mtune=native

View File

@@ -1,3 +1,7 @@
Artifitial Neural Network Library Artifitial Neural Network Library
================================= =================================
s
how to build:
mkdir build
cmake ..
make

View File

@@ -1,34 +0,0 @@
include ../Makefile.const
OBJFILES= ./sse_mathfun.o ./NeuralNetwork/Recurrent/Network.o ./NeuralNetwork/Neuron.o ./NeuralNetwork/FeedForward/Network.o ./NeuralNetwork/FeedForward/Layer.o
#LayerNetwork.o\
# Learning/Learning.o Learning/BackPropagation.o ../sse_mathfun.o
LINKFILES=
LIBNAME=NeuralNetwork
all: lib
spec:=../include/
%.o : %.cpp $(patsubst ./%.o,../include/%.h,$<)
$(CXX) $(CXXFLAGS) $(OPTIMALIZATION) -I../include -c $< -o $@
lib: $(LIBNAME).so $(LIBNAME).a
$(LIBNAME).so: $(OBJFILES)
$(CXX) -shared $(CXXFLAGS) $(OBJFILES) $(LINKFILES) -o $(LIBNAME).so
$(LIBNAME).a: $(OBJFILES)
rm -f $(LIBNAME).a # create new library
ar rcv $(LIBNAME).a $(OBJFILES) $(LINKFILES)
ranlib $(LIBNAME).a
nm --demangle $(LIBNAME).a > $(LIBNAME).nm
clean:
@rm -rf *.o ./*.so ./*.a ./*.nm ./*/*.o
@rm -rf *.o ./*.so ./*.a ./*.nm ./*/*.o
@rm -f $(OBJFILES)

17
tests/CMakeLists.txt Normal file
View File

@@ -0,0 +1,17 @@
cmake_minimum_required(VERSION 3.2)
project(NeuralNetworkTests CXX)
add_executable(activation activation.cpp)
target_link_libraries(activation NeuralNetwork)
add_executable(basis basis.cpp)
target_link_libraries(basis NeuralNetwork)
add_executable(backpropagation backpropagation.cpp)
target_link_libraries(backpropagation NeuralNetwork)
add_executable(feedforward feedforward.cpp)
target_link_libraries(feedforward NeuralNetwork)
add_executable(recurrent recurrent.cpp)
target_link_libraries(recurrent NeuralNetwork)

View File

@@ -1,27 +0,0 @@
include ../Makefile.const
LIB_DIR = ../lib
ALL_TESTS=activation basis recurrent feedforward
#LIBS=$(LIB_DIR)/Genetics.a $(LIB_DIR)/NeuralNetwork.a
#LIBS=-lGenetics.so -lNeuronNetwork
CXXFLAGS += -I$(LIB_DIR)
all:$(ALL_TESTS);
test: all
@for i in $(ALL_TESTS); do echo -n ./$$i; ./$$i; echo ""; done
../src/NeuralNetwork.so: lib
%: %.cpp ../src/NeuralNetwork.so | lib %.cpp ../src/NeuralNetwork.so
$(CXX) $(CXXFLAGS) -I../include -o $@ $< $ -lm ../src/NeuralNetwork.so -msse4.2 -DHAVE_VECLIB
lib:
@make -C ../
clean:
@for i in $(ALL_TESTS);do rm -f $$i;done;