cmake_minimum_required(VERSION 3.5.1) project(MLMC) #---------------------------------------------------------------------------------------# # Google test (Placed here to not compile it with mpiCC) add_subdirectory(googletest) include_directories(${PROJECT_BINARY_DIR}/googletest/googletest/include) include_directories(${PROJECT_BINARY_DIR}/googlemock/googletest/include) set(GTEST_LIB gtest gtest_main) #---------------------------------------------------------------------------------------# # MPI find_package(MPI REQUIRED) include_directories(${MPI_INCLUDE_PATH}) set(CMAKE_C_COMPILER ${MPI_C_COMPILER}) set(CMAKE_CXX_COMPILER ${MPI_CXX_COMPILER}) set(CMAKE_CXX_COMPILE_FLAGS ${CMAKE_CXX_COMPILE_FLAGS} ${MPI_COMPILE_FLAGS}) set(CMAKE_CXX_LINK_FLAGS ${CMAKE_CXX_LINK_FLAGS} ${MPI_LINK_FLAGS}) set(CMAKE_BUILD_TYPE distribution) #set(CMAKE_CXX_FLAGS_DISTRIBUTION "-Ofast") set(CMAKE_CXX_FLAGS_DISTRIBUTION "-O0") #set(CMAKE_CXX_FLAGS_DISTRIBUTION "-O1") #set(CMAKE_CXX_FLAGS_DISTRIBUTION "-O2") set(CMAKE_CXX_FLAGS "-fPIC -g -Wno-deprecated -std=gnu++11") #---------------------------------------------------------------------------------------# # Blas Lapack #find_package(FFTW3 REQUIRED) (Can't be found but still seems to link in) find_package(BLAS REQUIRED) find_package(LAPACK REQUIRED) #---------------------------------------------------------------------------------------# # Manage folder structure build folder file(MAKE_DIRECTORY ${PROJECT_BINARY_DIR}/data/vtk) file(MAKE_DIRECTORY ${PROJECT_BINARY_DIR}/data/gp) file(MAKE_DIRECTORY ${PROJECT_BINARY_DIR}/log) file(MAKE_DIRECTORY ${PROJECT_BINARY_DIR}/data/dual) #---------------------------------------------------------------------------------------# # Include directories include_directories(${PROJECT_SOURCE_DIR}/mlmc/src) include_directories(${PROJECT_SOURCE_DIR}/sprng5/include) include_directories(${PROJECT_SOURCE_DIR}/mpp/src) #---------------------------------------------------------------------------------------# # Link libraries link_directories(${PROJECT_SOURCE_DIR}/sprng5/lib) link_directories(${PROJECT_SOURCE_DIR}/mpp/superlu/lib) if (UNIX AND NOT APPLE) set(SUPERLU superlu_4.3) elseif (APPLE) set(SUPERLU superlu_4.3_mac10.10) elseif (WIN32) set(SUPERLU superlu_4.3_cygwin) endif () #---------------------------------------------------------------------------------------# # Subdirectories add_subdirectory(mpp) add_subdirectory(mlmc/src) #---------------------------------------------------------------------------------------# # Executables add_executable(MLMC-M++ mlmc/src/Main.C) # Linking target_link_libraries(MLMC-M++ MLMC sprng SRC LIB_PS ${SUPERLU} blas lapack fftw3 m) #---------------------------------------------------------------------------------------# # Test Executables #add_executable(TestCirculantEmbedding mlmc/tests/TestCirculantEmbedding.C) #add_executable(TestRNManager mlmc/tests/TestRNManager.C) # Linking #target_link_libraries(TestCirculantEmbedding MLMC sprng SRC SRC_Solver # blas lapack ${SUPERLU} fftw3 m ${GTEST_LIB}) #target_link_libraries(TestRNManager MLMC sprng fftw3 m ${GTEST_LIB}) #set(MPI_COMMAND mpirun -np 4 ) #---------------------------------------------------------------------------------------#