# Specify the minimum version for CMake cmake_minimum_required(VERSION 3.1) # Project's name project(mmmulti) # We build using c++14 set(CMAKE_CXX_STANDARD 14) set(THREADS_PREFER_PTHREAD_FLAG ON) find_package(Threads REQUIRED) # Use all standard-compliant optimizations set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O3 -g -fPIC -fopenmp") set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O3 -g -fPIC -fopenmp") # Set the output folder where your program will be created set(CMAKE_BINARY_DIR ${CMAKE_SOURCE_DIR}/bin) set(EXECUTABLE_OUTPUT_PATH ${CMAKE_BINARY_DIR}) set(LIBRARY_OUTPUT_PATH ${CMAKE_SOURCE_DIR}/lib) # The following folder will be included include_directories("${PROJECT_SOURCE_DIR}") set(atomicqueue_INCLUDE "/usr/include/atomic_queue") # set up our target executable and specify its dependencies and includes add_executable(mmmulti ${CMAKE_SOURCE_DIR}/src/main.cpp ) target_include_directories(mmmulti PUBLIC "${CMAKE_SOURCE_DIR}/src" # "${sdsl-lite_INCLUDE}" # "${sdsl-lite-divsufsort_INCLUDE}" # "${dynamic_INCLUDE}" # "${ips4o_INCLUDE}" "${atomicqueue_INCLUDE}" # "${paryfor_INCLUDE}" # "${tayweeargs_INCLUDE}" ) # macOS doesn't want you to link in libatomic this way if (${CMAKE_SYSTEM_NAME} MATCHES "Darwin") target_link_libraries(mmmulti "${sdsl-lite_LIB}/libsdsl.a" "${sdsl-lite-divsufsort_LIB}/libdivsufsort.a" "${sdsl-lite-divsufsort_LIB}/libdivsufsort64.a" Threads::Threads ) elseif (TRUE) target_link_libraries(mmmulti "-lsdsl" "-ldivsufsort" "-ldivsufsort64" "-latomic" Threads::Threads ) endif() if (APPLE) elseif (TRUE) # this was hard to track down # https://stackoverflow.com/questions/35116327/when-g-static-link-pthread-cause-segmentation-fault-why set (CMAKE_SHARED_LINKER_FLAGS "-lpthread -Wl,--as-needed") endif()