-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCMakeLists.txt
89 lines (72 loc) · 2.25 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
cmake_minimum_required(VERSION 3.5)
option(GRADATION_BUILD_TESTS "Build and run tests" OFF)
project(gradation)
function(common_compile_settings t)
target_compile_features(${t} PUBLIC cxx_std_14)
set_target_properties(${t} PROPERTIES CXX_VISIBILITY_PRESET "hidden")
if (WIN32)
target_compile_definitions(${t} PRIVATE
_CRT_NONSTDC_NO_WARNINGS
_CRT_SECURE_NO_WARNINGS
)
endif()
if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
target_compile_options(${t} PRIVATE
/Zc:__cplusplus
/Zc:inline
)
endif()
endfunction()
# Target gradation-vd
if (WIN32)
add_library(gradation-vd SHARED
source/gradation.cpp
source/gradation.rc
source/vd.cpp
)
set_target_properties(gradation-vd PROPERTIES OUTPUT_NAME "gradation")
set_target_properties(gradation-vd PROPERTIES SUFFIX ".vdf")
target_include_directories(gradation-vd PRIVATE
"${CMAKE_CURRENT_LIST_DIR}/include"
"${CMAKE_CURRENT_LIST_DIR}/include/vd2/OldFilterSdk"
)
common_compile_settings(gradation-vd)
target_link_libraries(gradation-vd PRIVATE
Comctl32
)
endif()
# Target gradation-avs
add_library(gradation-avs SHARED
source/avs.cpp
source/gradation.cpp
)
target_include_directories(gradation-avs PRIVATE
"${CMAKE_CURRENT_LIST_DIR}/include/avisynth"
)
common_compile_settings(gradation-avs)
# Target 'tests'
if (GRADATION_BUILD_TESTS)
file(GLOB_RECURSE TEST_SRC "${CMAKE_CURRENT_LIST_DIR}/test/*.cpp")
add_executable(gradation-test
source/gradation.cpp
${TEST_SRC}
)
target_include_directories(gradation-test PRIVATE
"${CMAKE_CURRENT_LIST_DIR}/source"
)
find_library(GTEST gtest REQUIRED)
find_library(GTEST_MAIN gtest_main REQUIRED)
target_link_libraries(gradation-test PRIVATE
${GTEST}
${GTEST_MAIN}
)
add_custom_command(
OUTPUT gradation-test-passed
COMMAND gradation-test
COMMAND ${CMAKE_COMMAND} -E touch gradation-test-passed
DEPENDS gradation-test
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
)
add_custom_target(gradation-run-test ALL DEPENDS gradation-test-passed)
common_compile_settings(gradation-test)
endif()