#限定CMake的版本
cmake_minimum_required (VERSION 3.5)

project(rootproject)
set(CHECK_WORK_Value "CELL_ET")

if (DEFINED WORK)
    set(CHECK_WORK_Value ${WORK})
endif()

# 根据宏设置编译时宏
add_definitions(-DCHECK_WORK="${CHECK_WORK_Value}")

message(STATUS "CHECK_WORK: ${CHECK_WORK_Value}")

find_package( OpenCV  REQUIRED )

message(STATUS "oPENCV Library status:")
message(STATUS ">version:${OpenCV_VERSION}")
message(STATUS "Include:${OpenCV_INCLUDE_DIRS}")

set(CMAKE_BUILD_TYPE "release")
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)  # 要求编译器支持 C++17
set(CMAKE_CXX_EXTENSIONS OFF)        # 禁用 GNU 特定的扩展
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
#set(CUDA_NVCC_FLAGS ${CUDA_NVCC_FLAGS}; --default-stream per-thread)
 
add_definitions(-DCUDA_API_PER_THREAD_DEFAULT_STREAM)
# PROJECT_INCLUDE_DIR当作全局头文件变量
set(PROJECT_INCLUDE_DIR c/include)

# x86_64,aarch64
set(BUILD_ARCH x86_64 CACHE STRING "Arch of this project" FORCE)
MESSAGE(STATUS "BUILD_ARCH : ${BUILD_ARCH}")

MESSAGE(STATUS "CMAKE_BUILD_TYPE : ${CMAKE_BUILD_TYPE}")
MESSAGE(STATUS "This is BINARY dir " ${PROJECT_BINARY_DIR})
MESSAGE(STATUS "This is SOURCE dir " ${PROJECT_SOURCE_DIR})

#包含通用的编译环境模块到顶层目录
include(${PROJECT_SOURCE_DIR}/cmake/default_variabes.cmake)
include(${PROJECT_SOURCE_DIR}/cmake/cpp_c_flags.cmake)
include(${PROJECT_SOURCE_DIR}/cmake/print_archs.cmake)

include_directories(${PROJECT_SOURCE_DIR}/include/)
include_directories(/usr/local/boost/include
/usr/include
${OpenCV_INCLUDE_DIRS}
)
link_directories(
${PROJECT_SOURCE_DIR}/lib/x86_64/
/usr/local/boost/lib
)

#下一级的编译目录

MESSAGE("build dependent module  -  start")
#当程序执行命令 ADD_SUBDIRECTORY(src)时进入目录 src 对其中的 CMakeLists.txt 进行解析。


add_subdirectory(ConfigModule)
MESSAGE("ConfigModule")

# CommonUtil
add_subdirectory(AlgorithmModule)
MESSAGE("AlgorithmModule")

add_subdirectory(example)
MESSAGE("example")


