cmake_minimum_required(VERSION 3.10) project(predictable_parallel_patterns VERSION 0.0.1 DESCRIPTION "predictable parallel patterns for scalable smart systems using work stealing") set(CMAKE_CXX_STANDARD 11) # seperate library and test/example executable output paths. set(EXECUTABLE_OUTPUT_PATH ${CMAKE_BINARY_DIR}/bin) set(LIBRARY_OUTPUT_PATH ${CMAKE_BINARY_DIR}/lib) # specific setup code is located in individual files. include(cmake/DisabelInSource.cmake) include(cmake/SetupOptimizationLevel.cmake) include(cmake/SetupThreadingSupport.cmake) include(cmake/SetupThreadSanitizer.cmake) include(cmake/SetupAddressSanitizer.cmake) # make our internal cmake script collection avaliable in the build process. list(APPEND CMAKE_PREFIX_PATH "${PROJECT_SOURCE_DIR}/cmake") # Include external libraries within the project structure (prefered, as no instalation is reqired). # Each library has an own CMakeLists.txt that should make it avaliabale as a library target, # thus allowing one to include it as any cmake dependency later on. add_subdirectory(extern/catch2) # Include all internal subprojects (library, examples, testing). add_subdirectory(lib/pls) # Include examples add_subdirectory(app/playground) add_subdirectory(app/test_for_new) add_subdirectory(app/invoke_parallel) # Add optional tests option(PACKAGE_TESTS "Build the tests" ON) if(PACKAGE_TESTS) enable_testing() add_subdirectory(test) add_test(NAME AllTests COMMAND tests) endif()