31
31
# Typical usage is:
32
32
# > cmake -DDECKLINK_SDK_ROOT:PATH="<some_path_here>"
33
33
# ...
34
+ #
34
35
# CMakeLists.txt:
36
+ # PROJECT(XYZ)
37
+ # ...
35
38
# FIND_PACKAGE(DeckLinkSDK REQUIRED)
36
- # TARGET_LINK_LIBRARIES(${your_app} ${your_libs} "${DeckLinkSDK_LIBS}")
39
+ # DeckLinkGenerateAPIFiles(${PROJECT_NAME})
40
+ # target_sources(vtk${PROJECT_NAME} PRIVATE ${MIDL_OUTPUT})
41
+ # LIST(APPEND BlackMagicDeckLink_SRCS ${MIDL_OUTPUT})
42
+ # TARGET_LINK_LIBRARIES(XYZ ${your_libs} ${DeckLinkSDK_LIBS})
37
43
#
38
44
# You can do the following in your DeckLink related sources;
39
- #define _stringify(x) #x
40
- #define STRINGIFY(x) _stringify(x)
41
- #include STRINGIFY(DeckLinkSDK_INCLUDE_FILE)
42
- #undef STRINGIFY
43
- #undef _stringify
45
+ # #include <DeckLinkAPI.h>
44
46
#
45
47
# You can optionally provide version argument, for example;
46
48
# FIND_PACKAGE(DeckLinkSDK 10.5 REQUIRED)
47
49
50
+ MACRO (DeckLinkGenerateAPIFiles _project_name)
51
+ IF (NOT WIN32 )
52
+ return ()
53
+ ENDIF ()
54
+
55
+ SET (MIDL_OUTPUT
56
+ ${CMAKE_CURRENT_BINARY_DIR} /DeckLinkAPI.h
57
+ ${CMAKE_CURRENT_BINARY_DIR} /DeckLinkAPI_i.c
58
+ )
59
+ SET (_midl_file
60
+ ${DeckLinkSDK_INCLUDE_DIR} /DeckLinkAPI.idl
61
+ )
62
+ ADD_CUSTOM_COMMAND (
63
+ OUTPUT ${MIDL_OUTPUT}
64
+ COMMAND midl /h ${CMAKE_CURRENT_BINARY_DIR} /DeckLinkAPI.h /iid ${CMAKE_CURRENT_BINARY_DIR} /DeckLinkAPI_i.c ${_midl_file}
65
+ WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
66
+ DEPENDS ${_midl_file}
67
+ VERBATIM
68
+ )
69
+ ADD_CUSTOM_TARGET (${_project_name} -midl-cmplr
70
+ DEPENDS ${MIDL_OUTPUT}
71
+ )
72
+ ADD_DEPENDENCIES (${_project_name}
73
+ ${_project_name} -midl-cmplr
74
+ )
75
+ SET_SOURCE_FILES_PROPERTIES (
76
+ ${MIDL_OUTPUT}
77
+ PROPERTIES
78
+ GENERATED TRUE
79
+ SKIP_AUTOGEN ON
80
+ )
81
+ ENDMACRO ()
82
+
48
83
SET (DeckLink_DEFAULT "/src/Blackmagic_SDK" )
49
84
50
85
IF (WIN32 )
51
86
SET (_platform "Win" )
52
- SET (__src_file DeckLinkAPI.idl)
53
87
SET (__include_file DeckLinkAPI.idl)
54
88
ELSE ()
55
- SET (__src_file DeckLinkAPIDispatch.cpp)
56
89
SET (__include_file DeckLinkAPI.h)
57
90
58
91
IF (APPLE )
@@ -92,12 +125,6 @@ ELSE()
92
125
UNSET (DeckLinkSDK_PATH)
93
126
ENDIF ()
94
127
95
- IF (WIN32 )
96
- SET (DeckLinkSDK_INCLUDE_FILE DeckLinkAPI_h.h)
97
- ELSE ()
98
- SET (DeckLinkSDK_INCLUDE_FILE ${DeckLinkSDK_INCLUDE_DIR} /DeckLinkAPI.h)
99
- ENDIF ()
100
-
101
128
SET (_version_h "${DeckLinkSDK_INCLUDE_DIR} /DeckLinkAPIVersion.h" )
102
129
IF (EXISTS "${_version_h} " )
103
130
FILE (STRINGS "${_version_h} " _tmpstr REGEX "^#define[\t ]+BLACKMAGIC_DECKLINK_API_VERSION_STRING[\t ]+\" .*\" " )
@@ -108,7 +135,7 @@ ENDIF()
108
135
INCLUDE (FindPackageHandleStandardArgs)
109
136
FIND_PACKAGE_HANDLE_STANDARD_ARGS(
110
137
DeckLinkSDK
111
- REQUIRED_VARS DeckLinkSDK_PATH DeckLinkSDK_INCLUDE_DIR DeckLinkSDK_INCLUDE_FILE
138
+ REQUIRED_VARS DeckLinkSDK_PATH DeckLinkSDK_INCLUDE_DIR
112
139
VERSION_VAR DeckLinkSDK_VERSION_STRING
113
140
FAIL_MESSAGE "DeckLink SDK not found. Please set DECKLINK_SDK_ROOT to the root folder of your DeckLink SDK install." )
114
141
@@ -118,17 +145,15 @@ IF(WIN32)
118
145
ADD_LIBRARY (NVIDIA_GPUDirect SHARED IMPORTED )
119
146
set_target_properties (NVIDIA_GPUDirect
120
147
PROPERTIES
121
- IMPORTED_IMPLIB "${DeckLinkSDK_PATH} /Win /NVIDIA_GPUDirect/lib/${BUILD_ARCHITECTURE} /dvp.lib"
122
- IMPORTED_LOCATION "${DeckLinkSDK_PATH} /Win /NVIDIA_GPUDirect/bin/${BUILD_ARCHITECTURE} /dvp.dll"
123
- INTERFACE_INCLUDE_DIRECTORIES "${DeckLinkSDK_PATH} /Win /NVIDIA_GPUDirect/include"
148
+ IMPORTED_IMPLIB "${DeckLinkSDK_PATH} /${_platform} /NVIDIA_GPUDirect/lib/${BUILD_ARCHITECTURE} /dvp.lib"
149
+ IMPORTED_LOCATION "${DeckLinkSDK_PATH} /${_platform} /NVIDIA_GPUDirect/bin/${BUILD_ARCHITECTURE} /dvp.dll"
150
+ INTERFACE_INCLUDE_DIRECTORIES "${DeckLinkSDK_PATH} /${_platform} /NVIDIA_GPUDirect/include"
124
151
)
125
152
126
153
set_target_properties (DeckLinkSDK
127
154
PROPERTIES
128
- INTERFACE_SOURCES
129
- "${DeckLinkSDK_PATH} /Win/include/${__src_file} "
130
155
INTERFACE_INCLUDE_DIRECTORIES
131
- "${DeckLinkSDK_PATH} /Win /include;${DeckLinkSDK_PATH} /Win /DirectShow/include"
156
+ "${DeckLinkSDK_PATH} /${_platform} /include;${DeckLinkSDK_PATH} /${_platform} /DirectShow/include"
132
157
)
133
158
SET (DeckLinkSDK_LIBS DeckLinkSDK NVIDIA_GPUDirect)
134
159
ELSE ()
@@ -141,8 +166,8 @@ ELSE()
141
166
ADD_LIBRARY (NVIDIA_GPUDirect SHARED IMPORTED )
142
167
set_target_properties (NVIDIA_GPUDirect
143
168
PROPERTIES
144
- IMPORTED_LOCATION "${DeckLinkSDK_PATH} /linux /NVIDIA_GPUDirect/${BUILD_ARCHITECTURE} /libdvp.so"
145
- INTERFACE_INCLUDE_DIRECTORIES "${DeckLinkSDK_PATH} /linux /NVIDIA_GPUDirect/include"
169
+ IMPORTED_LOCATION "${DeckLinkSDK_PATH} /${_platform} /NVIDIA_GPUDirect/${BUILD_ARCHITECTURE} /libdvp.so"
170
+ INTERFACE_INCLUDE_DIRECTORIES "${DeckLinkSDK_PATH} /${_platform} /NVIDIA_GPUDirect/include"
146
171
)
147
172
set_target_properties (DeckLinkSDK
148
173
PROPERTIES
@@ -158,10 +183,4 @@ ELSE()
158
183
ENDIF ()
159
184
ENDIF ()
160
185
161
- set_target_properties (DeckLinkSDK
162
- PROPERTIES
163
- INTERFACE_COMPILE_DEFINITIONS
164
- DeckLinkSDK_INCLUDE_FILE=${DeckLinkSDK_INCLUDE_FILE}
165
- )
166
-
167
186
MARK_AS_ADVANCED (DeckLinkSDK_LIBS)
0 commit comments