cmake_minimum_required(VERSION 3.5) project(ai_project LANGUAGES CXX) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pthread -Wall -Werror \ -Wno-unused-function -Wno-unused-but-set-variable") set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DDEBUG") set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -ftree-vectorize -mavx") find_package(Boost 1.68 REQUIRED COMPONENTS system program_options) find_package(BZip2 REQUIRED) find_package(ZLIB REQUIRED) find_package(EXPAT REQUIRED) find_package(OpenMP REQUIRED) set(FORT_ENABLE_TESTING OFF CACHE INTERNAL "") add_subdirectory(third-party/libfort) #################################################################################################### # common_lib #################################################################################################### file(GLOB_RECURSE ${CMAKE_PROJECT_NAME}_common_lib_SOURCES "src/common/**.cpp") add_library(${CMAKE_PROJECT_NAME}_common_lib ${${CMAKE_PROJECT_NAME}_common_lib_SOURCES}) target_compile_definitions( ${CMAKE_PROJECT_NAME}_common_lib PUBLIC "MAP_ADDRESS_COMPARE") target_include_directories( ${CMAKE_PROJECT_NAME}_common_lib PUBLIC "include" "third-party/json/include" "${Boost_INCLUDE_DIR}" "${BZIP2_INCLUDE_DIR}" "${ZLIB_DEPS}" "${EXPAT_INCLUDE_DIRS}") target_link_libraries( ${CMAKE_PROJECT_NAME}_common_lib stdc++fs ${Boost_LIBRARIES} ${BZIP2_LIBRARIES} ${ZLIB_LIBRARIES} ${EXPAT_LIBRARIES}) #################################################################################################### # add_elevation #################################################################################################### file(GLOB_RECURSE ${CMAKE_PROJECT_NAME}_add_elevation_SOURCES "src/preprocessing/add_elevation**.cpp") add_executable(${CMAKE_PROJECT_NAME}_add_elevation ${${CMAKE_PROJECT_NAME}_add_elevation_SOURCES}) target_include_directories( ${CMAKE_PROJECT_NAME}_add_elevation PUBLIC) target_link_libraries( ${CMAKE_PROJECT_NAME}_add_elevation ${CMAKE_PROJECT_NAME}_common_lib) #################################################################################################### # preprocess #################################################################################################### file(GLOB_RECURSE ${CMAKE_PROJECT_NAME}_preprocess_SOURCES "src/preprocessing/preprocess**.cpp") add_executable(${CMAKE_PROJECT_NAME}_preprocess ${${CMAKE_PROJECT_NAME}_preprocess_SOURCES}) target_include_directories( ${CMAKE_PROJECT_NAME}_preprocess PUBLIC) target_link_libraries( ${CMAKE_PROJECT_NAME}_preprocess ${CMAKE_PROJECT_NAME}_common_lib) #################################################################################################### # evolution_lib #################################################################################################### file(GLOB_RECURSE ${CMAKE_PROJECT_NAME}_evolution_lib_SOURCES "src/evolution/**.cpp") list(FILTER ${CMAKE_PROJECT_NAME}_evolution_lib_SOURCES EXCLUDE REGEX "src/evolution/evolve_main.cpp") add_library(${CMAKE_PROJECT_NAME}_evolution_lib ${${CMAKE_PROJECT_NAME}_evolution_lib_SOURCES}) target_compile_options( ${CMAKE_PROJECT_NAME}_evolution_lib PRIVATE ${OpenMP_CXX_FLAGS}) target_compile_definitions( ${CMAKE_PROJECT_NAME}_evolution_lib PRIVATE "DETERMINISTIC_PARALLELIZATION_BLOCK_SIZE=1") target_include_directories( ${CMAKE_PROJECT_NAME}_evolution_lib PUBLIC "third-party/exprtk") target_link_libraries( ${CMAKE_PROJECT_NAME}_evolution_lib ${CMAKE_PROJECT_NAME}_common_lib OpenMP::OpenMP_CXX fort) #################################################################################################### # evolve #################################################################################################### add_executable(${CMAKE_PROJECT_NAME}_evolve "src/evolution/evolve_main.cpp") target_link_libraries(${CMAKE_PROJECT_NAME}_evolve ${CMAKE_PROJECT_NAME}_evolution_lib) #################################################################################################### # evaluate #################################################################################################### file(GLOB_RECURSE ${CMAKE_PROJECT_NAME}_evaluate_SOURCES "src/evaluation/**.cpp") add_executable(${CMAKE_PROJECT_NAME}_evaluate ${${CMAKE_PROJECT_NAME}_evaluate_SOURCES}) target_link_libraries(${CMAKE_PROJECT_NAME}_evaluate ${CMAKE_PROJECT_NAME}_evolution_lib) #################################################################################################### # tests #################################################################################################### add_subdirectory(test)