if (("${BUILD_CPP_EXAMPLE}" STREQUAL "") OR ("${BUILD_CPP_EXAMPLE}" STREQUAL "OFF"))
message(STATUS "BUILD_CPP_EXAMPLE is OFF.")
add_compile_definitions(_GLIBCXX_USE_CXX11_ABI=0)
message(STATUS "_GLIBCXX_USE_CXX11_ABI = 0")
cmake_minimum_required(VERSION 3.12.0)
project(memcache_cpp_test VERSION 1.0 LANGUAGES CXX C)
set(CMAKE_SKIP_RPATH TRUE)
set(CMAKE_CXX_STANDARD 17)
set(MF_PATH $ENV{MEMFABRIC_HYBRID_HOME_PATH})
message(STATUS "MF_PATH: ${MF_PATH}")
if ("${MF_PATH}" STREQUAL "")
message(FATAL_ERROR "MEMFABRIC_HYBRID_HOME_PATH memfabric_hybrid path not found!")
endif ()
set(ASCEND_CANN_PACKAGE_PATH $ENV{ASCEND_HOME_PATH})
if ("${ASCEND_CANN_PACKAGE_PATH}" STREQUAL "")
message(FATAL_ERROR "ASCEND_HOME_PATH ascend cann path not found!")
endif ()
set(MCC_PATH $ENV{MEMCACHE_HYBRID_HOME_PATH})
message(STATUS "MCC_PATH: ${MCC_PATH}")
if ("${MCC_PATH}" STREQUAL "")
message(FATAL_ERROR "MEMCACHE_HYBRID_HOME_PATH memcache path not found!")
endif ()
file(GLOB_RECURSE ALL_HEADERS
"${CMAKE_CURRENT_SOURCE_DIR}/*.h"
"${MF_PATH}/*.h"
"${MCC_PATH}/*.h"
)
set(INCLUDE_DIRS "")
foreach (header ${ALL_HEADERS})
get_filename_component(HEADER_DIR ${header} PATH)
list(APPEND INCLUDE_DIRS ${HEADER_DIR})
endforeach ()
list(REMOVE_DUPLICATES INCLUDE_DIRS)
include_directories(${INCLUDE_DIRS})
list(LENGTH INCLUDE_DIRS INCLUDE_DIRS_COUNT)
message(STATUS "Project configured with ${INCLUDE_DIRS_COUNT} include directories")
file(GLOB_RECURSE ALL_SO
"${MF_PATH}/*.so"
"${MCC_PATH}/*.so"
)
add_executable(memcache_cpp_test memcache_cpp_test.cpp)
foreach (SO ${ALL_SO})
MESSAGE(STATUS "${SO}")
get_filename_component(FILENAME ${SO} NAME)
get_filename_component(FILEDIR ${SO} DIRECTORY)
string(FIND "${FILENAME}" "python" FILENAME_MATCH)
if (NOT FILENAME_MATCH EQUAL -1)
continue()
endif ()
target_link_directories(memcache_cpp_test PUBLIC ${FILEDIR})
target_link_libraries(memcache_cpp_test PUBLIC ${FILENAME})
endforeach ()
find_package(Python3 REQUIRED COMPONENTS Development)
target_link_libraries(memcache_cpp_test PUBLIC
Python3::Python
pthread
dl
)
message(STATUS "${INCLUDE_DIRS}")
target_include_directories(memcache_cpp_test PRIVATE ${INCLUDE_DIRS})
target_compile_options(memcache_cpp_test PRIVATE -W)
else ()
message(STATUS "BUILD_CPP_EXAMPLE is ${BUILD_CPP_EXAMPLE}.")
set(CMAKE_SKIP_RPATH FALSE)
file(GLOB_RECURSE ALL_HEADERS
"${PROJECT_SOURCE_DIR}/src/memcache/include/*.h"
)
set(INCLUDE_DIRS "")
foreach (header ${ALL_HEADERS})
get_filename_component(HEADER_DIR ${header} PATH)
list(APPEND INCLUDE_DIRS ${HEADER_DIR})
endforeach ()
list(REMOVE_DUPLICATES INCLUDE_DIRS)
include_directories(${INCLUDE_DIRS})
list(LENGTH INCLUDE_DIRS INCLUDE_DIRS_COUNT)
message(STATUS "Project configured with ${INCLUDE_DIRS_COUNT} include directories")
add_executable(memcache_cpp_test memcache_cpp_test.cpp)
target_link_libraries(memcache_cpp_test PUBLIC mmc_shared)
find_package(Python3 REQUIRED COMPONENTS Development)
target_link_libraries(memcache_cpp_test PUBLIC
Python3::Python
pthread
dl
)
message(STATUS "${INCLUDE_DIRS}")
target_include_directories(memcache_cpp_test PRIVATE ${INCLUDE_DIRS})
target_compile_options(memcache_cpp_test PRIVATE -W)
message(STATUS "BUILD_CPP_EXAMPLE is ON install: ${TARGET_INSTALL_DIR}/memcache/bin")
install(TARGETS memcache_cpp_test
RUNTIME DESTINATION ${TARGET_INSTALL_DIR}/memcache/bin
PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE)
endif ()