cmake_minimum_required(VERSION 3.16) project(mrubypp LANGUAGES CXX) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) option(MRUBYPP_BUILD_TEST "Build Catch2 Test" OFF) if (MSVC) add_compile_options("$<$:/utf-8>") add_compile_options("$<$:/utf-8>") add_compile_definitions(NOMINMAX) endif () add_library(mrubypp INTERFACE include/mrubypp/engine.h include/mrubypp/converters.h include/mrubypp/arena_guard.h include/mrubypp/bind_class.h) target_include_directories(mrubypp INTERFACE ${CMAKE_CURRENT_LIST_DIR}/include) if (${MRUBYPP_BUILD_TEST}) if (NOT DEFINED mruby_ROOT) message(NOTICE "[mrubypp] Using default mruby build") set(mruby_ROOT "${CMAKE_CURRENT_SOURCE_DIR}/deps/mruby") endif () add_subdirectory(deps/Catch2) enable_testing() add_executable(mrubypp_test test/test_class.cpp test/test_engine.cpp) target_include_directories(mrubypp_test PUBLIC "${mruby_ROOT}/include") target_link_directories(mrubypp_test PUBLIC "${mruby_ROOT}/lib") if (WIN32) target_link_libraries(mrubypp_test PUBLIC libmruby ws2_32.lib wsock32.lib ws2_32.lib) else () target_link_libraries(mrubypp_test PUBLIC mruby) endif () target_link_libraries(mrubypp_test PRIVATE mrubypp Catch2::Catch2WithMain) add_test(NAME mrubypp_test COMMAND mrubypp_test) endif () include(GNUInstallDirs) install(TARGETS mrubypp LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} )