file(GLOB SRCS *.cpp)
file(GLOB EXTERNAL_SRCS External/*.cpp External/*.c)
file(GLOB CONTAINERS_SRCS Containers/*.cpp)
file(GLOB GENIE_SRCS Genie/*.cpp)
file(GLOB INTERACTIONS_SRCS Interactions/*.cpp)
file(GLOB SPINWAVEPLOT_SRCS SpinWavePlot/*.cpp)
SOURCE_GROUP("Source Files\\External" FILES ${EXTERNAL_SRCS})
SOURCE_GROUP("Source Files\\Containers" FILES ${CONTAINERS_SRCS})
SOURCE_GROUP("Source Files\\Genie" FILES ${GENIE_SRCS})
SOURCE_GROUP("Source Files\\Interactions" FILES ${INTERACTIONS_SRCS})
SOURCE_GROUP("Source Files\\SpinWavePlot" FILES ${SPINWAVEPLOT_SRCS})

file(GLOB HDRS *.h)
file(GLOB EXTERNAL_HDRS External/*.h)
file(GLOB CONTAINERS_HDRS Containers/*.h)
file(GLOB GENIE_HDRS Genie/*.h)
file(GLOB INTERACTIONS_HDRS Interactions/*.h)
file(GLOB SPINWAVEPLOT_HDRS SpinWavePlot/*.h)
SOURCE_GROUP("Header Files\\External" FILES ${EXTERNAL_HDRS})
SOURCE_GROUP("Header Files\\Containers" FILES ${CONTAINERS_HDRS})
SOURCE_GROUP("Header Files\\Genie" FILES ${GENIE_HDRS})
SOURCE_GROUP("Header Files\\Interactions" FILES ${INTERACTIONS_HDRS})
SOURCE_GROUP("Header Files\\SpinWavePlot" FILES ${SPINWAVEPLOT_HDRS})
set(LIBRARY_SRCS ${EXTERNAL_SRCS} ${EXTERN_SRCS} ${CONTAINERS_SRCS} ${GENIE_SRCS} ${INTERACTIONS_SRCS} ${SPINWAVEPLOT_SRCS})
set(LIBRARY_HDRS ${EXTERNAL_HDRS} ${EXTERN_HDRS} ${CONTAINERS_HDRS} ${GENIE_HDRS} ${INTERACTIONS_HDRS} ${SPINWAVEPLOT_HDRS})

add_library(SpinWaveGenie ${LIBRARY_SRCS} ${LIBRARY_HDRS})

include_directories(${EIGEN3_INCLUDE_DIR} ${Boost_INCLUDE_DIR} ${TBB_INCLUDE_DIRS} ${NLOPT_INCLUDE_DIRS} ${NEXUS_INCLUDE_DIRS} ${CMAKE_CURRENT_SOURCE_DIR})
LINK_DIRECTORIES(${Boost_LIBRARY_DIRS} ${TBB_LIBRARY_DIRS} )
LINK_LIBRARIES(${Boost_LIBRARIES} ${TBB_LIBRARIES} ${NLOPT_LIBRARIES} ${NEXUS_CPP_LIBRARIES} SpinWaveGenie)
add_executable(spin_wave_genie ${SRCS} ${HDRS})
