-
Notifications
You must be signed in to change notification settings - Fork 1
/
otto_external_dependency.cmake
29 lines (26 loc) · 1.2 KB
/
otto_external_dependency.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
foreach(externalProject IN LISTS OTTO_DEPENDENCY_ON)
string(REPLACE ":" ";" packageInfo ${externalProject})
list(LENGTH packageInfo packageElements)
if (NOT ${packageElements} EQUAL 2)
message(FATAL_ERROR "
OTTO_DEPENDENCY_ON requires <projectName>:<projectVersion> for each dependency.
Offending value is <${externalProject}>
")
endif()
list(GET packageInfo 0 packageName)
list(GET packageInfo 1 packageVersion)
if ("${packageName}" STREQUAL "" OR "${packageVersion}" STREQUAL "")
message(FATAL_ERROR "
OTTO_DEPENDENCY_ON requires <projectName>:<projectVersion> for each dependency.
Offending value is <${externalProject}>
")
endif()
message(STATUS "External dependencies on ${packageName} version ${packageVersion}")
find_package(${packageName} ${packageVersion} REQUIRED)
if (APP_NAME)
target_link_libraries(${APP_NAME}-bin ${packageName}::${packageName})
endif()
if (LIB_NAME)
target_link_libraries(${LIB_NAME} PRIVATE ${packageName}::${packageName})
endif()
endforeach()