cheliequan
2023-01-12 19364a2cc1bdba9c8e8296df0d06cee336d187e6
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
cmake_minimum_required(VERSION 3.5)
#include(cmake_options.cmake)
 
 
option(AARCH64 "option for aarch64" OFF)
 
if(${AARCH64} STREQUAL ON)
    message("======>> use aarch64")
    set(CMAKE_TOOLCHAIN_FILE ${CMAKE_SOURCE_DIR}/protobuf/aarch64.cmake)
endif()
 
set (Target "cbhomedbapi")
project(${Target})
 
include(cmake_options.cmake)
 
##########################################################]
set(ARCH x86_64)
if(${AARCH64} STREQUAL ON)
    set(ARCH aarch64)
endif()
set(PROTO_LIB_PATH ${CMAKE_CURRENT_SOURCE_DIR}/protobuf/${ARCH})
set(PROTO_SRC_PATH ${CMAKE_CURRENT_SOURCE_DIR}/proto/${ARCH})
add_subdirectory(${PROJECT_SOURCE_DIR}/proto)
##########################################################]
 
include_directories(
    ${CMAKE_SOURCE_DIR}/3rdparty/bus_nng
    ${CMAKE_SOURCE_DIR}/3rdparty/bus_client
    ${CMAKE_SOURCE_DIR}/proto/${ARCH}
    ${PROTO_LIB_PATH}/include
    )
 
set(src
    ${CMAKE_SOURCE_DIR}/camera.cpp
    ${CMAKE_SOURCE_DIR}/polygon.cpp
    ${CMAKE_SOURCE_DIR}/rule.cpp
    ${CMAKE_SOURCE_DIR}/sdk.cpp
    ${CMAKE_SOURCE_DIR}/stack.cpp
    ${CMAKE_SOURCE_DIR}/sysset.cpp
    ${CMAKE_SOURCE_DIR}/util.cpp
    ${CMAKE_SOURCE_DIR}/3rdparty/yyjson/yyjson.c
    )
 
add_library(objs OBJECT ${src})
#set(CMAKE_SHARED_LINKER_FLAGS  ${CMAKE_SHARED_LINKER_FLAGS} "-Wl,--version-script=${CMAKE_CURRENT_SOURCE_DIR}/exported_symbols")
add_library(${Target} SHARED $<TARGET_OBJECTS:objs>)
target_link_libraries(${Target} PRIVATE bhome_msg)
 
set(Target_static ${Target}_static)
add_library(${Target_static} STATIC $<TARGET_OBJECTS:objs>)
set_target_properties(${Target}_static PROPERTIES OUTPUT_NAME ${Target})
set_target_properties(${Target} PROPERTIES CLEAN_DIRECT_OUTPUT 1)
set_target_properties(${Target}_static PROPERTIES CLEAN_DIRECT_OUTPUT 1)
 
# test
add_executable(test_app main.cpp $<TARGET_OBJECTS:objs>)
target_link_libraries(test_app ${Target}
    ${CMAKE_SOURCE_DIR}/3rdparty/bus_client/x86_64/libcbhomeclient.so
    ${CMAKE_SOURCE_DIR}/3rdparty/bus_nng/x86_64/libbus_nng.so
    bhome_msg pthread rt)