AimRT/cmake/NamespaceTool.cmake

28 lines
953 B
CMake
Raw Normal View History

2024-09-23 16:01:31 +08:00
# Copyright (c) 2023, AgiBot Inc.
# All rights reserved.
macro(set_root_namespace arg1)
set_property(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY __CURRENT_NAMESPACE__ ${arg1})
endmacro()
macro(set_namespace)
string(REGEX REPLACE ".*/\(.*\)" "\\1" __CUR_DIR__ ${CMAKE_CURRENT_SOURCE_DIR})
get_directory_property(__CUR_DIRECTORY_PARENT__ PARENT_DIRECTORY)
get_property(
__SUPERIOR_NAMESPACE__
DIRECTORY ${__CUR_DIRECTORY_PARENT__}
PROPERTY __CURRENT_NAMESPACE__)
set_property(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY __CURRENT_NAMESPACE__ ${__SUPERIOR_NAMESPACE__}::${__CUR_DIR__})
endmacro()
macro(get_namespace arg1)
get_directory_property(__CUR_DIRECTORY_PARENT__ PARENT_DIRECTORY)
get_property(
${arg1}
DIRECTORY ${__CUR_DIRECTORY_PARENT__}
PROPERTY __CURRENT_NAMESPACE__)
if(${arg1} STREQUAL "")
message(FATAL_ERROR "Can not get namespace for ${CMAKE_CURRENT_SOURCE_DIR}")
endif()
endmacro()