mirror of
https://github.com/Armored-Dragon/overte.git
synced 2025-03-11 16:13:16 +01:00
add macro to link shared dependencies to target
This commit is contained in:
parent
fc92b93326
commit
26f7b1ba62
30 changed files with 121 additions and 65 deletions
|
@ -1,6 +1,6 @@
|
|||
set(TARGET_NAME assignment-client)
|
||||
|
||||
setup_hifi_project(${TARGET_NAME} TRUE)
|
||||
setup_hifi_project(${TARGET_NAME} Core Gui Network Script Widgets)
|
||||
|
||||
include_glm(${TARGET_NAME})
|
||||
|
||||
|
@ -11,8 +11,7 @@ link_hifi_libraries(${TARGET_NAME}
|
|||
)
|
||||
|
||||
if (UNIX)
|
||||
target_link_libraries(${TARGET_NAME} ${DEPENDENCY_LIBRARIES} ${CMAKE_DL_LIBS})
|
||||
list(APPEND ${TARGET_NAME}_LIBRARIES_TO_LINK ${CMAKE_DL_LIBS})
|
||||
endif (UNIX)
|
||||
|
||||
find_package(Qt5 COMPONENTS Gui Network Script Widgets)
|
||||
target_link_libraries(${TARGET_NAME} Qt5::Gui Qt5::Network Qt5::Script Qt5::Widgets)
|
||||
link_shared_dependencies_to_target(${TARGET_NAME})
|
|
@ -22,13 +22,12 @@ macro(LINK_HIFI_LIBRARIES TARGET)
|
|||
|
||||
add_dependencies(${TARGET} ${HIFI_LIBRARY})
|
||||
|
||||
# link the actual library
|
||||
list(APPEND ${TARGET}_LIBRARIES_TO_LINK ${HIFI_LIBRARY})
|
||||
|
||||
# ask the library what its dynamic dependencies are and link them
|
||||
get_target_property(LINKED_TARGET_DEPENDENCY_LIBRARIES ${HIFI_LIBRARY} DEPENDENCY_LIBRARIES)
|
||||
|
||||
if (LINKED_TARGET_DEPENDENCY_LIBRARIES)
|
||||
target_link_libraries(${TARGET} ${HIFI_LIBRARY} ${LINKED_TARGET_DEPENDENCY_LIBRARIES})
|
||||
else ()
|
||||
target_link_libraries(${TARGET} ${HIFI_LIBRARY})
|
||||
endif ()
|
||||
list(APPEND ${TARGET}_LIBRARIES_TO_LINK ${LINKED_TARGET_DEPENDENCY_LIBRARIES})
|
||||
|
||||
endforeach()
|
||||
|
||||
|
|
25
cmake/macros/LinkSharedDependenciesToTarget.cmake
Normal file
25
cmake/macros/LinkSharedDependenciesToTarget.cmake
Normal file
|
@ -0,0 +1,25 @@
|
|||
#
|
||||
# LinkHifiLibrary.cmake
|
||||
# cmake/macros
|
||||
#
|
||||
# Copyright 2014 High Fidelity, Inc.
|
||||
# Created by Stephen Birarda on August 8, 2014
|
||||
#
|
||||
# Distributed under the Apache License, Version 2.0.
|
||||
# See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
|
||||
#
|
||||
|
||||
macro(LINK_SHARED_DEPENDENCIES_TO_TARGET TARGET)
|
||||
if (${TARGET}_LIBRARIES_TO_LINK)
|
||||
list(REMOVE_DUPLICATES ${TARGET}_LIBRARIES_TO_LINK)
|
||||
|
||||
# link these libraries to our target
|
||||
target_link_libraries(${TARGET} ${${TARGET}_LIBRARIES_TO_LINK})
|
||||
endif ()
|
||||
|
||||
# we've already linked our Qt modules, but we need to bubble them up to parents
|
||||
list(APPEND ${TARGET}_LIBRARIES_TO_LINK "${${TARGET}_QT_MODULES_TO_LINK}")
|
||||
|
||||
# set the property on this target so it can be retreived by targets linking to us
|
||||
set_target_properties(${TARGET_NAME} PROPERTIES DEPENDENCY_LIBRARIES "${${TARGET}_LIBRARIES_TO_LINK}")
|
||||
endmacro(LINK_SHARED_DEPENDENCIES_TO_TARGET _target)
|
|
@ -15,7 +15,7 @@ macro(SETUP_HIFI_LIBRARY TARGET)
|
|||
file(GLOB LIB_SRCS src/*.h src/*.cpp)
|
||||
set(LIB_SRCS ${LIB_SRCS})
|
||||
|
||||
# create a library and set the property so it can be referenced later
|
||||
# create a library and set the property so it can be referenced later
|
||||
add_library(${TARGET} ${LIB_SRCS} ${AUTOMTC_SRC})
|
||||
|
||||
set(QT_MODULES_TO_LINK ${ARGN})
|
||||
|
@ -24,17 +24,10 @@ macro(SETUP_HIFI_LIBRARY TARGET)
|
|||
find_package(Qt5 COMPONENTS ${QT_MODULES_TO_LINK})
|
||||
|
||||
foreach(QT_MODULE ${QT_MODULES_TO_LINK})
|
||||
# link this Qt module to ourselves
|
||||
target_link_libraries(${TARGET} Qt5::${QT_MODULE})
|
||||
|
||||
get_target_property(QT_LIBRARY_LOCATION Qt5::${QT_MODULE} LOCATION)
|
||||
|
||||
# add the actual path to the Qt module to a QT_LIBRARIES variable
|
||||
list(APPEND QT_LIBRARIES ${QT_LIBRARY_LOCATION})
|
||||
# add the actual path to the Qt module to our LIBRARIES_TO_LINK variable
|
||||
target_link_libraries(${TARGET} Qt5::${QT_MODULE})
|
||||
list(APPEND ${TARGET}_QT_MODULES_TO_LINK ${QT_LIBRARY_LOCATION})
|
||||
endforeach()
|
||||
|
||||
if (QT_LIBRARIES)
|
||||
set_target_properties(${TARGET} PROPERTIES DEPENDENCY_LIBRARIES "${QT_LIBRARIES}")
|
||||
endif ()
|
||||
|
||||
endmacro(SETUP_HIFI_LIBRARY _target)
|
|
@ -7,7 +7,7 @@
|
|||
# See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
|
||||
#
|
||||
|
||||
macro(SETUP_HIFI_PROJECT TARGET INCLUDE_QT)
|
||||
macro(SETUP_HIFI_PROJECT TARGET)
|
||||
project(${TARGET})
|
||||
|
||||
# grab the implemenation and header files
|
||||
|
@ -23,10 +23,19 @@ macro(SETUP_HIFI_PROJECT TARGET INCLUDE_QT)
|
|||
endforeach()
|
||||
|
||||
# add the executable, include additional optional sources
|
||||
add_executable(${TARGET} ${TARGET_SRCS} ${ARGN})
|
||||
add_executable(${TARGET} ${TARGET_SRCS} "${AUTOMTC_SRC}")
|
||||
|
||||
set(QT_MODULES_TO_LINK ${ARGN})
|
||||
list(APPEND QT_MODULES_TO_LINK Core)
|
||||
|
||||
find_package(Qt5 COMPONENTS ${QT_MODULES_TO_LINK})
|
||||
|
||||
foreach(QT_MODULE ${QT_MODULES_TO_LINK})
|
||||
target_link_libraries(${TARGET} Qt5::${QT_MODULE})
|
||||
|
||||
# add the actual path to the Qt module to our LIBRARIES_TO_LINK variable
|
||||
get_target_property(QT_LIBRARY_LOCATION Qt5::${QT_MODULE} LOCATION)
|
||||
list(APPEND ${TARGET}_QT_MODULES_TO_LINK ${QT_LIBRARY_LOCATION})
|
||||
endforeach()
|
||||
|
||||
if (${INCLUDE_QT})
|
||||
find_package(Qt5 COMPONENTS Core)
|
||||
target_link_libraries(${TARGET} Qt5::Core)
|
||||
endif ()
|
||||
endmacro()
|
|
@ -1,6 +1,6 @@
|
|||
set(TARGET_NAME domain-server)
|
||||
|
||||
setup_hifi_project(${TARGET_NAME} TRUE)
|
||||
setup_hifi_project(${TARGET_NAME})
|
||||
|
||||
# remove and then copy the files for the webserver
|
||||
add_custom_command(TARGET ${TARGET_NAME} POST_BUILD
|
||||
|
|
|
@ -3,4 +3,7 @@ set(TARGET_NAME animation)
|
|||
# use setup_hifi_library macro to setup our project and link appropriate Qt modules
|
||||
setup_hifi_library(${TARGET_NAME} Network Script)
|
||||
|
||||
link_hifi_libraries(${TARGET_NAME} shared fbx)
|
||||
link_hifi_libraries(${TARGET_NAME} shared fbx)
|
||||
|
||||
# call macro to link our dependencies and bubble them up via a property on our target
|
||||
link_shared_dependencies_to_target(${TARGET_NAME})
|
|
@ -5,4 +5,7 @@ setup_hifi_library(${TARGET_NAME} Network)
|
|||
|
||||
include_glm(${TARGET_NAME} "${ROOT_DIR}")
|
||||
|
||||
link_hifi_libraries(${TARGET_NAME} networking shared)
|
||||
link_hifi_libraries(${TARGET_NAME} networking shared)
|
||||
|
||||
# call macro to link our dependencies and bubble them up via a property on our target
|
||||
link_shared_dependencies_to_target(${TARGET_NAME})
|
|
@ -6,4 +6,7 @@ setup_hifi_library(${TARGET_NAME} Network Script)
|
|||
include_glm(${TARGET_NAME} "${ROOT_DIR}")
|
||||
|
||||
link_hifi_libraries(${TARGET_NAME} shared octree voxels networking)
|
||||
include_hifi_library_headers(fbx)
|
||||
include_hifi_library_headers(fbx)
|
||||
|
||||
# call macro to link our dependencies and bubble them up via a property on our target
|
||||
link_shared_dependencies_to_target(${TARGET_NAME})
|
|
@ -1,4 +1,7 @@
|
|||
set(TARGET_NAME embedded-webserver)
|
||||
|
||||
# use setup_hifi_library macro to setup our project and link appropriate Qt modules
|
||||
setup_hifi_library(${TARGET_NAME} Network)
|
||||
setup_hifi_library(${TARGET_NAME} Network)
|
||||
|
||||
# call macro to link our dependencies and bubble them up via a property on our target
|
||||
link_shared_dependencies_to_target(${TARGET_NAME})
|
|
@ -7,12 +7,9 @@ include_glm(${TARGET_NAME} "${ROOT_DIR}")
|
|||
|
||||
link_hifi_libraries(${TARGET_NAME} shared networking octree voxels)
|
||||
|
||||
# link ZLIB
|
||||
find_package(ZLIB)
|
||||
|
||||
include_directories(SYSTEM "${ZLIB_INCLUDE_DIRS}")
|
||||
list(APPEND ${TARGET_NAME}_LIBRARIES_TO_LINK "${ZLIB_LIBRARIES}")
|
||||
|
||||
# set a property indicating the libraries we are dependent on and link them to ourselves
|
||||
set(DEPENDENCY_LIBRARIES "${ZLIB_LIBRARIES}")
|
||||
set_target_properties(${TARGET_NAME} PROPERTIES DEPENDENCY_LIBRARIES ${DEPENDENCY_LIBRARIES})
|
||||
target_link_libraries(${TARGET_NAME} ${DEPENDENCY_LIBRARIES})
|
||||
# call macro to link our dependencies and bubble them up via a property on our target
|
||||
link_shared_dependencies_to_target(${TARGET_NAME})
|
||||
|
|
|
@ -8,4 +8,7 @@ setup_hifi_library(${TARGET_NAME} Network Script Widgets)
|
|||
# link in the networking library
|
||||
link_hifi_libraries(${TARGET_NAME} shared networking)
|
||||
|
||||
include_glm(${TARGET_NAME} "${ROOT_DIR}")
|
||||
include_glm(${TARGET_NAME} "${ROOT_DIR}")
|
||||
|
||||
# call macro to link our dependencies and bubble them up via a property on our target
|
||||
link_shared_dependencies_to_target(${TARGET_NAME})
|
|
@ -5,4 +5,7 @@ setup_hifi_library(${TARGET_NAME} Network Script)
|
|||
|
||||
include_glm(${TARGET_NAME} "${ROOT_DIR}")
|
||||
|
||||
link_hifi_libraries(${TARGET_NAME} shared octree fbx networking animation)
|
||||
link_hifi_libraries(${TARGET_NAME} shared octree fbx networking animation)
|
||||
|
||||
# call macro to link our dependencies and bubble them up via a property on our target
|
||||
link_shared_dependencies_to_target(${TARGET_NAME})
|
|
@ -3,4 +3,7 @@ set(TARGET_NAME networking)
|
|||
# use setup_hifi_library macro to setup our project and link appropriate Qt modules
|
||||
setup_hifi_library(${TARGET_NAME} Network)
|
||||
|
||||
link_hifi_libraries(${TARGET_NAME} shared)
|
||||
link_hifi_libraries(${TARGET_NAME} shared)
|
||||
|
||||
# call macro to link our dependencies and bubble them up via a property on our target
|
||||
link_shared_dependencies_to_target(${TARGET_NAME})
|
|
@ -7,13 +7,15 @@ include_glm(${TARGET_NAME} "${ROOT_DIR}")
|
|||
|
||||
link_hifi_libraries(${TARGET_NAME} shared networking)
|
||||
|
||||
# link ZLIB
|
||||
# find ZLIB and OpenSSL
|
||||
find_package(ZLIB)
|
||||
find_package(OpenSSL REQUIRED)
|
||||
|
||||
include_directories(SYSTEM "${ZLIB_INCLUDE_DIRS}" "${OPENSSL_INCLUDE_DIR}")
|
||||
|
||||
# set a property indicating the libraries we are dependent on and link them to ourselves
|
||||
set(DEPENDENCY_LIBRARIES "${ZLIB_LIBRARIES}" "${OPENSSL_LIBRARIES}")
|
||||
set_target_properties(${TARGET_NAME} PROPERTIES DEPENDENCY_LIBRARIES ${DEPENDENCY_LIBRARIES})
|
||||
target_link_libraries(${TARGET_NAME} ${DEPENDENCY_LIBRARIES})
|
||||
|
||||
# append ZLIB and OpenSSL to our list of libraries to link
|
||||
list(APPEND ${TARGET_NAME}_LIBRARIES_TO_LINK "${ZLIB_LIBRARIES}")
|
||||
list(APPEND ${TARGET_NAME}_LIBRARIES_TO_LINK "${OPENSSL_LIBRARIES}")
|
||||
|
||||
# call macro to link our dependencies and bubble them up via a property on our target
|
||||
link_shared_dependencies_to_target(${TARGET_NAME})
|
|
@ -6,4 +6,7 @@ setup_hifi_library(${TARGET_NAME} Gui Network Script)
|
|||
include_glm(${TARGET_NAME} "${ROOT_DIR}")
|
||||
|
||||
link_hifi_libraries(${TARGET_NAME} shared octree fbx networking animation)
|
||||
include_hifi_library_headers(script-engine)
|
||||
include_hifi_library_headers(script-engine)
|
||||
|
||||
# call macro to link our dependencies and bubble them up via a property on our target
|
||||
link_shared_dependencies_to_target(${TARGET_NAME})
|
|
@ -5,4 +5,7 @@ setup_hifi_library(${TARGET_NAME} Gui Network Script Widgets)
|
|||
|
||||
include_glm(${TARGET_NAME} "${ROOT_DIR}")
|
||||
|
||||
link_hifi_libraries(${TARGET_NAME} shared octree voxels fbx particles models animation)
|
||||
link_hifi_libraries(${TARGET_NAME} shared octree voxels fbx particles models animation)
|
||||
|
||||
# call macro to link our dependencies and bubble them up via a property on our target
|
||||
link_shared_dependencies_to_target(${TARGET_NAME})
|
|
@ -1,4 +1,7 @@
|
|||
set(TARGET_NAME shared)
|
||||
|
||||
# use setup_hifi_library macro to setup our project and link appropriate Qt modules
|
||||
setup_hifi_library(${TARGET_NAME} Network Widgets)
|
||||
setup_hifi_library(${TARGET_NAME} Network Widgets)
|
||||
|
||||
# call macro to link our dependencies and bubble them up via a property on our target
|
||||
link_shared_dependencies_to_target(${TARGET_NAME})
|
|
@ -7,10 +7,12 @@ include_glm(${TARGET_NAME} "${ROOT_DIR}")
|
|||
|
||||
link_hifi_libraries(${TARGET_NAME} shared octree networking)
|
||||
|
||||
# link ZLIB
|
||||
# find ZLIB
|
||||
find_package(ZLIB)
|
||||
include_directories(SYSTEM "${ZLIB_INCLUDE_DIRS}")
|
||||
|
||||
get_target_property(LINKED_LIBRARIES ${TARGET_NAME} DEPENDENCY_LIBRARIES)
|
||||
list(APPEND DEPENDENCY_LIBRARIES "${ZLIB_LIBRARIES}")
|
||||
list(REMOVE_DUPLICATES DEPENDENCY_LIBRARIES)
|
||||
# add it to our list of libraries to link
|
||||
list(APPEND ${TARGET}_LIBRARIES_TO_LINK "${ZLIB_LIBRARIES}")
|
||||
|
||||
# call macro to link our dependencies and bubble them up via a property on our target
|
||||
link_shared_dependencies_to_target(${TARGET_NAME})
|
|
@ -1,6 +1,6 @@
|
|||
set(TARGET_NAME audio-tests)
|
||||
|
||||
setup_hifi_project(${TARGET_NAME} TRUE)
|
||||
setup_hifi_project(${TARGET_NAME})
|
||||
|
||||
#include glm
|
||||
include_glm(${TARGET_NAME} ${ROOT_DIR})
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
set(TARGET_NAME jitter-tests)
|
||||
|
||||
setup_hifi_project(${TARGET_NAME} TRUE)
|
||||
setup_hifi_project(${TARGET_NAME})
|
||||
|
||||
# link in the shared libraries
|
||||
link_hifi_libraries(${TARGET_NAME} shared networking)
|
|
@ -4,7 +4,7 @@ find_package(Qt5 COMPONENTS Network Script Widgets)
|
|||
|
||||
auto_mtc(${TARGET_NAME} "${ROOT_DIR}")
|
||||
|
||||
setup_hifi_project(${TARGET_NAME} TRUE "${AUTOMTC_SRC}")
|
||||
setup_hifi_project(${TARGET_NAME})
|
||||
|
||||
# link in the shared libraries
|
||||
link_hifi_libraries(${TARGET_NAME} metavoxels networking shared)
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
set(TARGET_NAME networking-tests)
|
||||
|
||||
setup_hifi_project(${TARGET_NAME} TRUE)
|
||||
setup_hifi_project(${TARGET_NAME})
|
||||
|
||||
# link in the shared libraries
|
||||
link_hifi_libraries(${TARGET_NAME} shared networking)
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
set(TARGET_NAME octree-tests)
|
||||
|
||||
setup_hifi_project(${TARGET_NAME} TRUE)
|
||||
setup_hifi_project(${TARGET_NAME})
|
||||
|
||||
# link in the shared libraries
|
||||
link_hifi_libraries(${TARGET_NAME} octree)
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
set(TARGET_NAME physics-tests)
|
||||
|
||||
setup_hifi_project(${TARGET_NAME} TRUE)
|
||||
setup_hifi_project(${TARGET_NAME})
|
||||
|
||||
# link in the shared libraries
|
||||
link_hifi_libraries(${TARGET_NAME} shared)
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
set(TARGET_NAME shared-tests)
|
||||
|
||||
setup_hifi_project(${TARGET_NAME} TRUE)
|
||||
setup_hifi_project(${TARGET_NAME})
|
||||
|
||||
# link in the shared libraries
|
||||
link_hifi_libraries(${TARGET_NAME} shared)
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
set(TARGET_NAME bitstream2json)
|
||||
setup_hifi_project(${TARGET_NAME} TRUE)
|
||||
setup_hifi_project(${TARGET_NAME})
|
|
@ -1,2 +1,2 @@
|
|||
set(TARGET_NAME json2bitstream)
|
||||
setup_hifi_project(${TARGET_NAME} TRUE)
|
||||
setup_hifi_project(${TARGET_NAME})
|
|
@ -1,2 +1,2 @@
|
|||
set(TARGET_NAME mtc)
|
||||
setup_hifi_project(${TARGET_NAME} TRUE)
|
||||
setup_hifi_project(${TARGET_NAME})
|
|
@ -1,3 +1,3 @@
|
|||
set(TARGET_NAME voxel-edit)
|
||||
|
||||
setup_hifi_project(${TARGET_NAME} TRUE)
|
||||
setup_hifi_project(${TARGET_NAME})
|
Loading…
Reference in a new issue