徐知行

cmkae 模版

cmkae 模版

cmake 模版,用的时候直接复制,改改就行

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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
cmake_minimum_required(VERSION 3.24 FATAL_ERROR)
project(templete LANGUAGES ASM C CXX CUDA)
set(CMAKE_C_STANDARD 11) # c11
set(CMAKE_CXX_STANDARD 17) # c++17
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
set(CMAKE_VERBOSE_MAKEFILE ON)

if(NOT CMAKE_BUILD_TYPE)
    set(CMAKE_BUILD_TYPE "Release")
    message(STATUS "Build type not specified: defaulting to release.")
else()
    string(TOLOWER ${CMAKE_BUILD_TYPE} LOWERCASE_BUILD_TYPE)

    if(LOWERCASE_BUILD_TYPE STREQUAL "debug")
        message(STATUS "add debug macro")

        # add_definitions(-DDEBUG_AUDIO)
    endif()
endif()

set(EXECUTABLE_OUTPUT_PATH ${CMAKE_BINARY_DIR}/bin)

# 设置编译开关
option(BUILD_TTS_SDK_DYNAMIC "Build dynamic library of tts sdk api." OFF)
option(BUILD_TTS_SDK_STATIC "Build static library tts sdk api." OFF)
option(BUILD_WITH_AVX512 "Build with avx512 optimized." OFF)
option(USE_ASAN "Use asan to debug." OFF)
option(BUILD_STRESS_TEST_TOOL "Build stress test tool." OFF)
option(BUILD_TEMPLETE_TOOL "Build templete tool to synthesis audio." ON)
option(BUILD_WEB_TOOL "Build templete tool to synthesis audio." OFF)
option(ENABLE_LTO "enable link-time optimization" OFF)

# 设置依赖
include(deps/cmake/platform.cmake)
include(deps/cmake/yaml-cpp.cmake)
if(BUILD_JSONRPC_SERVER)
    include(deps/cmake/json.cmake)
    include(deps/cmake/inja.cmake)
endif()

# add_definitions(-DGLUE_DUMP_FILE=1)
add_library(gpu_util STATIC ${PROJECT_SOURCE_DIR}/util/gpu_util.cu)
target_include_directories(gpu_util PUBLIC $ENV{CUDA_HOME}/include)
target_link_directories(gpu_util PUBLIC $ENV{CUDA_HOME}/lib64)
target_link_libraries(gpu_util PUBLIC nvidia-ml cudadevrt cudart)
set_target_properties(gpu_util PROPERTIES
    CUDA_ARCHITECTURES "35;50;60;70;75;80;86"
)

# 源文件
file(GLOB TEMPLETE_CORE_FILES
    ${PROJECT_SOURCE_DIR}/templete/*.c
    ${PROJECT_SOURCE_DIR}/templete/*.cc
    ${PROJECT_SOURCE_DIR}/templete/core/*.c
    ${PROJECT_SOURCE_DIR}/templete/core/*.cc
)

file(GLOB TEMPLETE_UTIL_FILES
    ${PROJECT_SOURCE_DIR}/templete/util/*.c
    ${PROJECT_SOURCE_DIR}/templete/util/*.cc
)

file(GLOB TEMPLETE_MODULES_FILES
    ${PROJECT_SOURCE_DIR}/templete/modules/*.c
    ${PROJECT_SOURCE_DIR}/templete/modules/*.cc
    ${PROJECT_SOURCE_DIR}/templete/modules/internal/*.cc
)

file(GLOB TEMPLETE_GRAPH_FILES
    ${PROJECT_SOURCE_DIR}/templete/graph/*.c
    ${PROJECT_SOURCE_DIR}/templete/graph/*.cc
)

set(TEMPLETE_SRC_FILES ${TEMPLETE_CORE_FILES} ${TEMPLETE_UTIL_FILES} ${TEMPLETE_MODULES_FILES} ${TEMPLETE_GRAPH_FILES})
list(SORT TEMPLETE_SRC_FILES)
list(REMOVE_DUPLICATES TEMPLETE_SRC_FILES)

add_library(templete STATIC ${TEMPLETE_SRC_FILES})
target_include_directories(templete PUBLIC ${PROJECT_SOURCE_DIR}/)
target_include_directories(templete PUBLIC ${cryption_SOURCE_DIR})
target_link_libraries(templete PRIVATE zsencrypt)
target_link_directories(templete PUBLIC ${cryption_SOURCE_DIR}/core/cryptopp)

target_link_libraries(templete PUBLIC glue gpu_util yaml-cpp::yaml-cpp Eigen3::Eigen stdc++fs)

set_target_properties(templete PROPERTIES
    CUDA_SEPARABLE_COMPILATION ON
    CUDA_STANDARD 14
)



# share
if(BUILD_TTS_SDK_DYNAMIC)
    add_library(templete_tts_monolithic_api SHARED ${TEMPLETE_SDK_FILES})
    target_include_directories(templete_tts_monolithic_api PUBLIC ${ACODEC_INCLUDE_DIRS}/include)
    target_include_directories(templete_tts_monolithic_api PUBLIC ${PROJECT_SOURCE_DIR}/)
    target_link_libraries(templete_tts_monolithic_api PUBLIC lfe templete ${LIB_ACODECS})
    target_link_options(templete_tts_monolithic_api PRIVATE -Wl,-Bsymbolic)

    if(NOT "$ENV{TC_MALLOC}" STREQUAL "")
        target_link_directories(templete_tts_monolithic_api PUBLIC $ENV{TC_MALLOC}/lib)
        target_link_libraries(templete_tts_monolithic_api PUBLIC libtcmalloc.a)
    else()
        message(STATUS "TC_MALLOC NOT SET")
    endif()
endif()

# static
if(BUILD_TTS_SDK_STATIC OR BUILD_STRESS_TEST_TOOL OR BUILD_TEMPLETE_TOOL)
    add_library(templete_sdk_api STATIC ${TEMPLETE_SDK_FILES})
    target_include_directories(templete_sdk_api PUBLIC ${ACODEC_INCLUDE_DIRS}/include)
    target_include_directories(templete_sdk_api PUBLIC ${PROJECT_SOURCE_DIR}/)
    target_link_libraries(templete_sdk_api PUBLIC lfe templete ${LIB_ACODECS})
endif()

file(GLOB TEMPLETE_TOOLS_COMMON
    ${PROJECT_SOURCE_DIR}/tools/utils/*.c
    ${PROJECT_SOURCE_DIR}/tools/utils/*.cc
)

if(BUILD_TEMPLETE_JSONRPC_SERVER)
    # 添加 websocket server
    add_subdirectory(${PROJECT_SOURCE_DIR}/server)
endif()

# 编译合成工具
if(BUILD_TEMPLETE_TOOL)
    set(TEMPLETE_TOOLS_FILES
        ${PROJECT_SOURCE_DIR}/tools/tools.cc
        ${TEMPLETE_TOOLS_COMMON}
    )
    add_executable(templete_tools ${TEMPLETE_TOOLS_FILES})
    target_include_directories(templete_tools PUBLIC ${PROJECT_SOURCE_DIR}/)
    target_link_libraries(templete_tools templete_sdk_api)

    set(TEMPLETE_SPEED_TOOLS_FILES
        ${PROJECT_SOURCE_DIR}/tools/test_speed.cc
        ${TEMPLETE_TOOLS_COMMON}
    )
    add_executable(templete_speed_tools ${TEMPLETE_SPEED_TOOLS_FILES})
    target_include_directories(templete_speed_tools PUBLIC ${PROJECT_SOURCE_DIR}/)
    target_link_libraries(templete_speed_tools templete_sdk_api)

    set(TEMPLETE_BATCH_TOOLS_FILES
        ${PROJECT_SOURCE_DIR}/tools/batch_synthesis.cc
        ${TEMPLETE_TOOLS_COMMON}
    )
    add_executable(templete_batch_synthesis ${TEMPLETE_BATCH_TOOLS_FILES})
    target_include_directories(templete_batch_synthesis PUBLIC ${PROJECT_SOURCE_DIR}/)
    target_link_libraries(templete_batch_synthesis templete_sdk_api)
endif()

comments powered by Disqus