1# 2# Copyright (C) 2024 Huawei Technologies Co, Ltd. 3# 4 5cmake_minimum_required(VERSION 3.18) 6project(Util LANGUAGES CXX) 7 8set(target_name RuntimeUtil) 9 10find_package(AGPBaseAPI REQUIRED) 11find_package(AGPEngineAPI REQUIRED) 12 13include(${BASE_ROOT_DIRECTORY}/cmake/cmake_tools.cmake) 14 15# 16# Library target. 17# 18add_library(${target_name} STATIC) 19 20set(sources 21 include/util/core_library_loader.h 22 include/util/io_util.h 23 include/util/json.h 24 include/util/json_util.h 25 include/util/namespace.h 26 include/util/path_util.h 27 28 src/util/io_util.cpp 29 src/util/json.cpp 30 src/util/path_util.cpp 31) 32source_group(TREE ${CMAKE_CURRENT_LIST_DIR} FILES ${sources}) 33 34target_sources(${target_name} PRIVATE 35 ${sources} 36) 37 38target_include_directories(${target_name} PUBLIC include PRIVATE src) 39 40target_link_libraries(${target_name} PRIVATE 41 AGPBase::AGPBaseAPI 42 AGPEngine::AGPEngineAPI 43) 44 45set_property(TARGET ${target_name} PROPERTY CXX_STANDARD 17) 46set_property(TARGET ${target_name} PROPERTY CXX_EXTENSIONS OFF) 47 48setup_warnings(${target_name}) 49 50# Fix for min/max macro conflicts on windows. 51if(WIN32) 52 target_compile_definitions(${target_name} PRIVATE NOMINMAX) 53endif() 54 55# Disable RTTI 56if(MSVC) 57 target_compile_options(${target_name} PRIVATE /GR-) 58elseif("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang" OR "${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU") 59 target_compile_options(${target_name} PRIVATE -fno-rtti) 60endif() 61 62# 63# Clang format target 64# 65set(formatTarget "Format${target_name}") 66add_custom_target(${formatTarget} 67 COMMAND clang-format -verbose -i ${src} 68 WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR} 69) 70set_target_properties(${formatTarget} PROPERTIES FOLDER Formatting) 71