cmake_minimum_required (VERSION 3.1) project (Particles) cmake_policy(VERSION 3.3) set(CMAKE_EXPORT_COMPILE_COMMANDS 1) set(CMAKE_CXX_STANDARD 14) set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${PROJECT_SOURCE_DIR}/cmake") ################################################################ # libpart ################################################################ add_library(part SHARED compute_boundary.cc compute_verlet_integration.cc particle.cc planet.cc compute_gravity.cc csv_reader.cc particles_factory_interface.cc planets_factory.cc compute_contact.cc compute_kinetic_energy.cc csv_writer.cc system.cc compute_energy.cc compute_potential_energy.cc ping_pong_ball.cc material_point.cc system_evolution.cc ping_pong_balls_factory.cc compute_interaction.cc compute_temperature.cc material_points_factory.cc ) ################################################################ # FFTW ################################################################ option(USE_FFTW "Use fftw library" ON) if(USE_FFTW) add_definitions(-DUSE_FFTW) set(FFTW_LIBRARY_PATH CACHE PATH /usr/local/include/) # "library where to search libfftw3" find_library(FFTW_LIBRARIES fftw3 ${FFTW_LIBRARY_PATH} /usr/lib/x86_64-linux-gnu/) set(FFTW_INCLUDE_PATH CACHE PATH /usr/local/include) # "path where to search fftw include files" find_path(FFTW_INCLUDES fftw3.h ${FFTW_INCLUDE_PATH} /usr/include/) include_directories(${FFTW_INCLUDES}) #find_package(FFTW) target_link_libraries(part ${FFTW_LIBRARIES}) endif(USE_FFTW) ################################################################ # Particles executable ################################################################ add_executable(particles main.cc) target_link_libraries(particles part) ################################################################ # Google test ################################################################ add_subdirectory(googletest) add_executable(test_kepler test_kepler.cc) target_link_libraries(test_kepler part gtest_main gtest pthread) if(USE_FFTW) add_executable(test_fft test_fft.cc) target_link_libraries(test_fft part gtest_main gtest ${FFTW_LIBRARIES} pthread) endif(USE_FFTW) ################################################################ # Doxygen ################################################################ # find_package(Doxygen) # if (DOXYGEN_FOUND) # # # to set other options, read: https://cmake.org/cmake/help/v3.9/module/FindDoxygen.html # doxygen_add_docs( # doxygen # ${PROJECT_SOURCE_DIR} # COMMENT "Generate html pages" # ) # add_custom_target(doc DEPENDS doxygen) # endif(DOXYGEN_FOUND) ################################################################ # Pybind ################################################################ option (USE_PYTHON "Use pybind library" ON) if (USE_PYTHON) #find_package(pybind11 REQUIRED) add_subdirectory(pybind11) add_library(pypart MODULE pypart.cc) target_link_libraries(pypart PRIVATE pybind11::module part) set_target_properties(pypart PROPERTIES PREFIX "${PYTHON_MODULE_PREFIX}" SUFFIX "${PYTHON_MODULE_EXTENSION}" ) file( COPY ${CMAKE_CURRENT_SOURCE_DIR}/main.py DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/ ) endif(USE_PYTHON)