47 lines
1.4 KiB
CMake
47 lines
1.4 KiB
CMake
# Copyright (c) 2023, AgiBot Inc.
|
|
# All rights reserved.
|
|
|
|
# Get the current folder name
|
|
string(REGEX REPLACE ".*/\(.*\)" "\\1" CUR_DIR ${CMAKE_CURRENT_SOURCE_DIR})
|
|
|
|
# Get namespace
|
|
get_namespace(CUR_SUPERIOR_NAMESPACE)
|
|
string(REPLACE "::" "_" CUR_SUPERIOR_NAMESPACE_UNDERLINE ${CUR_SUPERIOR_NAMESPACE})
|
|
|
|
# Set target name
|
|
set(CUR_TARGET_NAME ${CUR_SUPERIOR_NAMESPACE_UNDERLINE}_${CUR_DIR})
|
|
set(CUR_TARGET_ALIAS_NAME ${CUR_SUPERIOR_NAMESPACE}::${CUR_DIR})
|
|
|
|
# Set file collection
|
|
file(GLOB_RECURSE head_files ${CMAKE_CURRENT_SOURCE_DIR}/*.h)
|
|
file(GLOB_RECURSE test_files ${CMAKE_CURRENT_SOURCE_DIR}/*_test.cc)
|
|
|
|
# Add target
|
|
add_library(${CUR_TARGET_NAME} INTERFACE)
|
|
add_library(${CUR_TARGET_ALIAS_NAME} ALIAS ${CUR_TARGET_NAME})
|
|
|
|
# Set include path of target
|
|
target_include_directories(
|
|
${CUR_TARGET_NAME}
|
|
INTERFACE $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/..>
|
|
$<INSTALL_INTERFACE:include/aimrt>)
|
|
|
|
# Set link libraries of target
|
|
target_link_libraries(
|
|
${CUR_TARGET_NAME}
|
|
INTERFACE aimrt::common::util
|
|
Boost::beast)
|
|
|
|
# Set compile definitions of target
|
|
target_compile_definitions(${CUR_TARGET_NAME} INTERFACE BOOST_ASIO_NO_DEPRECATED)
|
|
|
|
# Set compile options of target
|
|
if(WIN32)
|
|
target_compile_options(${CUR_TARGET_NAME} INTERFACE /bigobj)
|
|
endif()
|
|
|
|
# Set test of target
|
|
if(AIMRT_BUILD_TESTS AND test_files)
|
|
add_gtest_target(TEST_TARGET ${CUR_TARGET_NAME} TEST_SRC ${test_files})
|
|
endif()
|