Skip to content
Snippets Groups Projects
CMakeLists.txt 4.55 KiB
Newer Older
IF(NOT BUILD_LIB)
    IF(ENV{BUILD_LIB})
        SET(BUILD_LIB $ENV{BUILD_LIB})
    ELSE()
        SET(BUILD_LIB "yes")
    ENDIF()
ENDIF()

IF(NOT BUILD_EXAMPLES)
    IF(ENV{BUILD_EXAMPLES})
        SET(BUILD_EXAMPLES $ENV{BUILD_EXAMPLES})
    ELSE()
        SET(BUILD_EXAMPLES "no")
    ENDIF()
ENDIF()

IF(NOT BUILD_TESTS)
    IF(ENV{BUILD_TESTS})
        SET(BUILD_TESTS $ENV{BUILD_TESTS})
    ELSE()
        SET(BUILD_TESTS "no")
    ENDIF()
ENDIF()

IF("${BUILD_LIB}" STREQUAL "yes")

    SET(LIBRARIES_OUTPUT_DIR ${PROJECT_BINARY_DIR}/lib)

    SET(LIB_TYPE "STATIC")
    IF(DEPENDENCIES_LINK_TYPE STREQUAL "shared")
        SET(LIB_TYPE "SHARED")
    ENDIF()

    ADD_LIBRARY(
        exprtk_wrap

        ${LIB_TYPE}

        General/ExprtkWrapper.cpp

    SET_TARGET_PROPERTIES(
        exprtk_wrap

        PROPERTIES
        ARCHIVE_OUTPUT_DIRECTORY $<1:${LIBRARIES_OUTPUT_DIR}>
        LIBRARY_OUTPUT_DIRECTORY $<1:${LIBRARIES_OUTPUT_DIR}>
        RUNTIME_OUTPUT_DIRECTORY $<1:${LIBRARIES_OUTPUT_DIR}>
    TARGET_INCLUDE_DIRECTORIES(
        exprtk_wrap
        PRIVATE
        ${EXPRTK_INCLUDE_DIR}
        ${Boost_INCLUDE_DIRS}
        ${SRC_DIR}
    TARGET_LINK_LIBRARIES(
        exprtk_wrap
    IF(NOT OpenBLAS_LIBRARIES)
        SET(OpenBLAS_LIBRARIES "")
    ENDIF()

    IF(NOT BLAS_LIBRARIES)
        SET(BLAS_LIBRARIES "")
    ENDIF()

    IF(NOT LAPACK_LIBRARIES)
        SET(LAPACK_LIBRARIES "")
    ENDIF()

    ADD_LIBRARY(
        lib4neuro

        ${LIB_TYPE}

        Neuron/Neuron.cpp
        Neuron/NeuronBiased.cpp
        Neuron/NeuronBinary.cpp
        Neuron/NeuronConstant.cpp
        Neuron/NeuronLinear.cpp
        Neuron/NeuronAbsolute.cpp
        Neuron/NeuronRectifier.cpp
        Neuron/NeuronFilter.cpp
        Neuron/NeuronBinaryBiased.cpp
        Neuron/NeuronLinearSaturated.cpp
        Network/NeuralNetwork.cpp
        Network/NeuralNetworkSum.cpp
        NetConnection/ConnectionFunctionGeneral.cpp
        NetConnection/ConnectionFunctionIdentity.cpp
        LearningMethods/LearningMethods.cpp
        LearningMethods/ParticleSwarm.cpp
        LearningMethods/GradientDescent.cpp
        LearningMethods/LevenbergMarquardt.cpp
        LearningMethods/GradientDescentBB.cpp
        DataSet/DataSet.cpp
        ErrorFunction/ErrorFunctions.cpp
        Solvers/DESolver.cpp
        CSVReader/CSVReader.cpp
        CrossValidator/CrossValidator.cpp
        NormalizationStrategy/NormalizationStrategy.cpp
        LearningMethods/GradientDescentSingleItem.cpp
        LearningMethods/LearningSequence.cpp
        LearningMethods/RandomSolution.cpp
        NetConnection/ConnectionFunctionConstant.cpp
        Neuron/NeuronBiased.cpp
Martin Beseda's avatar
Martin Beseda committed
    # Detect Threading library
    SET(THREADS_PREFER_PTHREAD_FLAG ON)
    FIND_PACKAGE(Threads REQUIRED)
Martin Beseda's avatar
Martin Beseda committed
    # GFortran linking
    SET(GFORT "")
    IF(OpenBLAS_FOUND)
        MESSAGE("Linking GFortran because of OpenBLAS...")
        SET(GFORT gfortran)
    ENDIF()

    TARGET_LINK_LIBRARIES(
        lib4neuro

        PRIVATE
        exprtk_wrap
        Threads::Threads
        ${Boost_LIBRARIES}
        ${CXX_FILESYSTEM_LIB}
        ${OpenBLAS_LIBRARIES}
        ${BLAS_LIBRARIES}
        ${LAPACK_LIBRARIES}
        ${GFORT}
    TARGET_INCLUDE_DIRECTORIES(
        lib4neuro
        PRIVATE
        ${EXPRTK_INCLUDE_DIR}
        ${SRC_DIR}
        ${Boost_INCLUDE_DIRS}
        ${ARMADILLO_INCLUDE_DIR}
    SET_TARGET_PROPERTIES(
        lib4neuro
        PROPERTIES
        ARCHIVE_OUTPUT_DIRECTORY $<1:${LIBRARIES_OUTPUT_DIR}>
        LIBRARY_OUTPUT_DIRECTORY $<1:${LIBRARIES_OUTPUT_DIR}>
        RUNTIME_OUTPUT_DIRECTORY $<1:${LIBRARIES_OUTPUT_DIR}>
    IF("${DEPENDENCIES_LINK_TYPE}" STREQUAL "static")
        ADD_LIBRARY(boost_unit_test STATIC boost_test_lib_dummy.cpp)
    ELSEIF("${DEPENDENCIES_LINK_TYPE}" STREQUAL "shared")
        ADD_LIBRARY(boost_unit_test SHARED boost_test_lib_dummy.cpp)
    ENDIF()
    SET_TARGET_PROPERTIES(
        boost_unit_test
        PROPERTIES
        ARCHIVE_OUTPUT_DIRECTORY $<1:${LIBRARIES_OUTPUT_DIR}>
        LIBRARY_OUTPUT_DIRECTORY $<1:${LIBRARIES_OUTPUT_DIR}>
        RUNTIME_OUTPUT_DIRECTORY $<1:${LIBRARIES_OUTPUT_DIR}>
    TARGET_INCLUDE_DIRECTORIES(
        ${PREFIX}boost_unit_test
IF("${BUILD_TESTS}" STREQUAL "yes")
    ADD_SUBDIRECTORY(tests)
ENDIF()
IF("${BUILD_EXAMPLES}" STREQUAL "yes")
    ADD_SUBDIRECTORY(examples)
ENDIF()