-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathCMakeLists.txt
101 lines (84 loc) · 2.7 KB
/
CMakeLists.txt
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
cmake_minimum_required(VERSION 3.10)
project(STRM64)
add_compile_options(-Wall -g -O3 -DNDEBUG)
include_directories(${PROJECT_SOURCE_DIR}/include)
include_directories(library/vgmstream/include)
include_directories(library/vgmstream/include/ext_includes/ffmpeg)
set (CMAKE_CXX_STANDARD 17)
list(APPEND SRC_FILES
src/main.cpp
src/sequence.cpp
src/soundbank.cpp
src/stream.cpp
)
add_executable(STRM64
${SRC_FILES})
if(WIN32)
target_link_libraries(STRM64
-static-libgcc
-static-libstdc++
-static
winpthread
"${PROJECT_SOURCE_DIR}/library/vgmstream/windows/libvgmstream.a"
"${PROJECT_SOURCE_DIR}/library/vgmstream/windows/libatrac9.a"
"${PROJECT_SOURCE_DIR}/library/vgmstream/windows/libavcodec.a"
"${PROJECT_SOURCE_DIR}/library/vgmstream/windows/libavformat.a"
"${PROJECT_SOURCE_DIR}/library/vgmstream/windows/libavutil.a"
"${PROJECT_SOURCE_DIR}/library/vgmstream/windows/libcelt-0061.a"
"${PROJECT_SOURCE_DIR}/library/vgmstream/windows/libcelt-0110.a"
"${PROJECT_SOURCE_DIR}/library/vgmstream/windows/libg719_decode.a"
"${PROJECT_SOURCE_DIR}/library/vgmstream/windows/libmpg123-0.a"
"${PROJECT_SOURCE_DIR}/library/vgmstream/windows/libvorbis.a"
"${PROJECT_SOURCE_DIR}/library/vgmstream/windows/libswresample.a"
"${PROJECT_SOURCE_DIR}/library/vgmstream/windows/libspeex.a"
)
add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_directory
${PROJECT_SOURCE_DIR}/library/vgmstream/windows/ext_libs
$<TARGET_FILE_DIR:${PROJECT_NAME}>)
else()
# FFmpeg
find_path(AVCODEC_INCLUDE_DIR libavcodec/avcodec.h)
find_library(AVCODEC avcodec)
find_path(AVFORMAT_INCLUDE_DIR libavformat/avformat.h)
find_library(AVFORMAT avformat)
find_path(AVUTIL_INCLUDE_DIR libavutil/avutil.h)
find_library(AVUTIL avutil)
find_path(SWRESAMPLE_INCLUDE_DIR libswresample/swresample.h)
find_library(SWRESAMPLE swresample)
# Vorbis
find_path(VORBIS_INCLUDE_DIR vorbis/codec.h)
find_library(VORBIS vorbis)
find_path(VORBISFILE_INCLUDE_DIR vorbis/vorbisfile.h)
find_library(VORBISFILE vorbisfile)
# MPG123
find_path(MPG123_INCLUDE_DIR mpg123.h)
find_library(MPG123 mpg123)
# SPEEX
find_path(SPEEX_INCLUDE_DIR speex/speex.h)
find_library(SPEEX speex)
target_include_directories(STRM64
PRIVATE
${AVCODEC_INCLUDE_DIR}
${AVFORMAT_INCLUDE_DIR}
${AVUTIL_INCLUDE_DIR}
${SWRESAMPLE_INCLUDE_DIR}
${VORBIS_INCLUDE_DIR}
${VORBISFILE_INCLUDE_DIR}
${MPG123_INCLUDE_DIR}
${SPEEX_INCLUDE_DIR}
)
target_link_libraries(STRM64
PRIVATE
"${PROJECT_SOURCE_DIR}/library/vgmstream/lib/libvgmstream.a"
${AVCODEC}
${AVFORMAT}
${AVUTIL}
${SWRESAMPLE}
${VORBIS}
${VORBISFILE}
${MPG123}
${SPEEX}
)
endif()
configure_file(${PROJECT_SOURCE_DIR}/README.md README.md COPYONLY)